突然我的Inno Setup编译器停止工作了。自从我上次使用它以来,我刚刚安装了一份新的证书给同一家公司。
我已经以这种方式配置了签名工具(NAME是证书中Subject的字符串的开头):
mysigntool="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\signtool.exe" sign /v /a /s my /n NAME /t http://timestamp.verisign.com/scripts/timestamp.dll
然后在Inno Setup .iss文件中我有:
SignTool=mysigntool
SignedUninstaller=yes
符号总是失败,退出代码为0x1,如果我删除了/ t和时间戳。请注意,如果我从命令提示符运行相同的命令,则签名工作正常。
答案 0 :(得分:9)
您需要将$f
添加到SignTool的末尾(在IDE设置中,而不是脚本中),以便实际传递要签名的文件的名称。这就是您收到“缺少文件名”错误的原因。
请参阅Inno help file中的示例。
答案 1 :(得分:2)
首先要尝试的是运行signtool.exe
独立版,看看它输出的错误。
(我知道你已经尝试过了。)
如果无法以这种方式重现问题,请从命令行运行Inno Setup编译器。您将看到signtool
的输出以及其他编译器输出。
如果signtool
失败,当从Inno Setup GUI编译时,它的控制台只是短暂闪烁,所以你没有机会看到它的输出。
或者,您可以将signtool.exe
打包到批处理文件,并从Inno Setup而不是signtool
调用批处理。如果签名失败,请在批处理文件的末尾调用pause
。这样,即使在Inno Setup GUI中也可以看到错误。
批处理文件可能如下所示:
@echo off
c:\path\signtool.exe %*
set SIGN_RESULT=%ERRORLEVEL%
if %SIGN_RESULT% equ 0 (
echo Signing succeeded
exit /B 0
)
echo Signing failed with %SIGN_RESULT%
pause
exit /B %SIGN_RESULT%
另见Inno Setup - Signing fails with "Sign Tool failed with exit code 0x1"。