В Inno Setup мой инструмент подписи определяется как:
cmd /k "C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe" sign /t http://timestamp.comodoca.com /n "My Company" $f
Предварительная настройка cmd /k
(как предлагается в Inno Setup - Ошибка подписи с "Ошибка Sign Tool с кодом выхода 0x1" ) показывает, что нет на самом деле проблема с самим инструментом подписи, а скорее с тем, как Inno Setup вызывает его, генерируя следующее сообщение:
'C:\Program' is not recognized as an internal or external command, operable program or batch file.
Очевидно, он обрезает путь к signtool
в первый пробел, хотя я заключил его в кавычки. Я даже попытался заменить кавычки на $q
, чтобы посмотреть, имеет ли это значение. (Это не так.) Я бы подумал, что это неправильное поведение парсера, чтобы опозорить кавычки, поскольку в инструкциях четко говорится, что нужно вставлять точный текст, который вы бы использовали в командной строке, а сам пример включает кавычки (https://revolution.screenstepslive.com/s/revolution/m/10695/l/563371-signing-installers-you-create-with-inno-setup).
Все прекрасно работает из командной строки. По какой-то причине Inno Setup просто неправильно вызывает signtool
.
ДОБАВЛЕНО 2020-07-14:
Пример Inno Setup, скопированный с их веб-сайта:
"C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin\signtool.exe" sign /f "C:\MY_CODE_SIGNING.PFX" /t http://timestamp.comodoca.com/authenticode /p MY_PASSWORD $f
Моя версия, использованная без cmd /k
:
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe" sign /t http://timestamp.comodoca.com /n "My Company" $f
Как видите, мы используем кавычки таким же образом. Я проверю наличие обновлений - наверное, я должен был это сделать первым. Когда у меня будет время, я верну определение signtool и посмотрю, исправит ли это обновление.
Кроме того, я должен был быть более ясным. Я новичок в Inno Setup, и мне не приходило в голову разъяснять это. Я компилирую через Inno Script Studio
. Мне приходит в голову, что есть некоторая вероятность, что это связано с поведением в определенной c версии Script Studio, а не с самим компилятором, но я недостаточно знаю о внутренней работе, чтобы делать что-то большее, чем предполагать.