Ошибка signtool с Inno Setup с кодом выхода 0x1

Внезапно мой компилятор Inno Setup перестал работать. С тех пор, как я использовал его в последний раз, я просто установил новый сертификат, выданный той же компании.

Я настроил инструмент подписи таким образом (ИМЯ - это начало строки для темы в сертификате):

mysigntool="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /v /a /s my /n NAME /t http://timestamp.verisign.com/scripts/timestamp.dll

А затем в файле .iss Inno Setup у меня есть:

SignTool=mysigntool
SignedUninstaller=yes

Знак всегда не работает с кодом выхода 0x1, даже если я удалю / t и временную метку. Обратите внимание, что если я запускаю ту же команду из командной строки, подпись работает отлично.


person Mauro Ganswer    schedule 16.06.2015    source источник
comment
Что выводит signtool.exe?   -  person Martin Prikryl    schedule 16.06.2015
comment
Из Inno Setup я не могу получить много подробностей. Когда я нажимаю "запустить" или "скомпилировать", я просто получаю: Compiler Error! Sign Tool failed with exit code 0x1.   -  person Mauro Ganswer    schedule 16.06.2015


Ответы (2)


Вам нужно добавить $f в конец вашего SignTool (в настройках IDE, а не в скрипте), чтобы фактически передать имя файла, который нужно подписать. Вот почему вы получаете сообщение об ошибке «отсутствует имя файла».

См. Примеры в файле справки Inno.

person Miral    schedule 30.06.2015

Очевидно, первым делом нужно попробовать запустить signtool.exe автономно, чтобы посмотреть, какие ошибки он выводит.

(я знаю, что вы это уже пробовали).


Если вы не можете воспроизвести проблему таким образом, запустите компилятор Inno Setup из командной строки. Вы увидите вывод signtool вместе с выводом других компиляторов.

Если signtool не работает, при компиляции из графического интерфейса Inno Setup его консоль кратковременно мигает, так что у вас нет возможности увидеть его вывод.


В качестве альтернативы вы можете обернуть signtool.exe в пакетный файл и вызвать пакет из Inno Setup вместо signtool. В конце командного файла вызовите pause, если подпись не удалась. Таким образом, вы можете увидеть ошибку даже в графическом интерфейсе Inno Setup.

Пакетный файл может выглядеть так:

@echo off

c:\path\signtool.exe %*

set SIGN_RESULT=%ERRORLEVEL%

if %SIGN_RESULT% equ 0 (
  echo Signing succeeded
  exit /B 0
)

echo Signing failed with %SIGN_RESULT%
pause

exit /B %SIGN_RESULT%

См. Также Inno Setup - Ошибка подписи с помощью Sign Tool завершилась с кодом выхода 0x1.

person Martin Prikryl    schedule 16.06.2015
comment
Хотя вы, возможно, не просили об этом, исходя из предоставленной вами информации, вы никогда не сможете получить лучший ответ. Это не дискуссионный форум. Это сайт вопросов и ответов. Вы можете получить настолько хороший ответ, насколько хорош ваш вопрос. - person Martin Prikryl; 16.06.2015