12

是否可以在 Inno Setup 中同时使用 sha1 和 sha256 对卸载程序和安装程序进行签名?

我知道可以通过命令工具用两个证书签署可执行文件,但想知道这是否可以SignTool在 Inno 中实现。

4

2 回答 2

11

自动应答...

是的,这是可能的。正如@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批处理的位置。

对于sha1的 Windows XP 兼容性:删除/as/tr替换为/t、删除/td(根据需要/tr

我会把它留在这里,因为也许有人会觉得它有帮助。

于 2015-08-19T08:09:11.013 回答
5

我正在使用 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 将使用这两个证书对安装和卸载进行签名。

于 2016-08-03T21:08:29.483 回答