Можно ли использовать установщик и деинсталлятор с двойной подписью с сертификатами sha1 и sha256?

Возможно ли в Inno Setup одновременно подписать Uninstaller и Installer с помощью sha1 и sha256?

Я знаю, что можно подписать исполняемый файл обоими сертификатами с помощью командного инструмента, но хочу знать, возможно ли это достичь с SignTool в Inno.


person RobeN    schedule 18.08.2015    source источник
comment
Почему это не должно быть возможно? Вы можете передать пакетный файл в качестве своего инструмента подписи, который дважды вызывает signtool.exe.   -  person Wosi    schedule 19.08.2015


Ответы (2)


Автоответ...

Да, это возможно. Как предложил @Wosi, вы можете написать пакет, а затем вызвать его с добавленным параметром $f.

Пример партии (signtool.bat):

@echo off

"PATH_TO_SIGNTOOL\signtool.exe" sign /v /du "COMPANY_NAME" /fd sha1 /t "http://timestamp.verisign.com/scripts/timstamp.dll" /f "sha1_cert.pfx" /p PASSWORD %1

set SIGN_RESULT_1=%ERRORLEVEL%

"PATH_TO_SIGNTOOL\signtool.exe" sign /as /v /du "COMPANY_NAME" /fd sha256 /tr "http://timestamp.comodoca.com/rfc3161" /td sha256 /f "sha256_cert.pfx" /p PASSWORD %1

set SIGN_RESULT_2=%ERRORLEVEL%

set /a RESULT=%SIGN_RESULT_1%+%SIGN_RESULT_2%

if %RESULT% NEQ 0 (
   echo Warning! Signing failed with %SIGN_RESULT_1% for sh1 and %SIGN_RESULT_2% for sha256
   pause
   exit /B %RESULT%
) 

echo Signing succeeded
exit /B 0

Затем в Inno Setup вы можете вызвать signtool.bat $f, где $f будет передано %1 для пакета.

Для совместимости с Windows XP для sha1: удалено /as, /tr заменено на /t, удалено /td (так как требуется /tr)

Оставлю здесь, может кому пригодится.

person RobeN    schedule 19.08.2015
comment
Хотя это работает, обратите внимание, что начиная с Inno Setup 5.5.8 вы может иметь несколько директив SignTool, поскольку ответ @TheArtTrooper показывает. - person Martin Prikryl; 04.08.2016
comment
У меня были ошибки компиляции - нужно написать полный путь: c:\...\signtool.bat $f - person ViH; 27.11.2016

Я использую InnoSetup 5.5.9. Я компилирую свой скрипт из командной строки, используя ISCC. Мой сценарий установки включает эти две строки в разделе [Setup]:

SignTool=sha1
SignTool=sha256

Команда ISCC выглядит так:

ISCC "/ssha1=signtool.exe /f <cert.pfx> /p <certpwd> /fd SHA1 /t <timestamp.url> /v $f" "/ssha256=signtool.exe /f <cert.pfx> /p <certpwd> /fd SHA256 /tr <timestamp.url> /td SHA256 /as /v $f" setup.iss

Innosetup подпишет установку и удаление с помощью обоих сертификатов.

person TheArtTrooper    schedule 03.08.2016