在 Inno Setup 中,是否可以同时使用 sha1 和 sha256 签名卸载程序和安装程序?
我知道可以通过命令行工具同时使用两个证书来为可执行文件签名,但想知道是否可以通过 Inno 中的 SignTool
实现。
在 Inno Setup 中,是否可以同时使用 sha1 和 sha256 签名卸载程序和安装程序?
我知道可以通过命令行工具同时使用两个证书来为可执行文件签名,但想知道是否可以通过 Inno 中的 SignTool
实现。
自动回答...
是的,这是可能的。如@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
,并使用/t
替换/tr
,去掉/td
(因为它需要/tr
)。
我将其留在这里,希望有人能够从中获益。
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