使用退出代码0x1的Inno Setup失败了signtool

时间:2015-06-16 08:58:26

标签: inno-setup code-signing signing code-signing-certificate

突然我的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和时间戳。请注意,如果我从命令提示符运行相同的命令,则签名工作正常。

2 个答案:

答案 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"