Используя Inno Setup, я недавно попытался перейти от вызова Compil32 для пакетного создания настроек к использованию iscc. Следующее без подписи работает нормально (выполняется из командного файла из кода С#):
iscc "C:\Inno Setup Scripts\test.iss"
Но когда я пытаюсь добавить подпись, настройка не создается:
iscc "C:\Inno Setup Scripts\test.iss" /Ssigntool = "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool" sign /f "C:\Test PFX\test.pfx" /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a /p codeSigningPassword $f
codeSigningPassword
— пароль, заданный в коде C#.
Я подозреваю, что это может быть как-то связано с моим размещением кавычек - я предполагал, что они должны обходить любой путь к файлу, имеющий пробелы.
Весь параметр /S...
с командной строкой signtool
должен быть заключен в двойные кавычки. А внутренние кавычки нужно экранировать как $q
:
iscc "C:\Inno Setup Scripts\test.iss" "/Ssigntool=$qC:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool$q sign /f $qC:\Test PFX\test.pfx$q /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a /p codeSigningPassword $f"
Синтаксис командной строки, который вы пытаетесь использовать, подразумевает, что ваш файл .iss должен содержать соответствующую директиву SignTool
:
[Setup]
SignTool=signtool
SignedUninstaller=yes
См. https://jrsoftware.org/ishelp/index.php?topic=setup_signtool
Альтернативы:
signtool
в файле .iss, используя директиву SignTool
;signtool
в пакетный файл и используйте путь к командному файлу в командной строке iscc
.