是否可以使用sha1和sha256证书双重签名安装程序和卸载程序?

时间:2015-08-18 20:52:29

标签: inno-setup signtool verisign

在Inno Setup中是否可以同时使用sha1和sha256对Uninstaller和Installer进行签名?

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

2 个答案:

答案 0 :(得分:10)

...自动应答

是的,这是可能的。正如@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设置中,您可以致电signtool.bat $f,其中$f将传递给%1批次。

对于 sha1 的Windows XP兼容性:已删除/as/tr已替换为/t,已删除/td(因为它需要{{1} }})

我会把它留在这里,因为也许有人会发现它有用。

答案 1 :(得分:4)

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