是否可以在 Inno Setup 中同时使用 sha1 和 sha256 对卸载程序和安装程序进行签名?
我知道可以通过命令工具用两个证书签署可执行文件,但想知道这是否可以SignTool
在 Inno 中实现。
是否可以在 Inno Setup 中同时使用 sha1 和 sha256 对卸载程序和安装程序进行签名?
我知道可以通过命令工具用两个证书签署可执行文件,但想知道这是否可以SignTool
在 Inno 中实现。
自动应答...
是的,这是可能的。正如@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
)
我会把它留在这里,因为也许有人会觉得它有帮助。
我正在使用 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 将使用这两个证书对安装和卸载进行签名。