【问题标题】:signtool fail with Inno Setup with exit code 0x1signtool 因 Inno Setup 而失败,退出代码为 0x1
【发布时间】:2015-06-16 08:58:25
【问题描述】:

我的 Inno Setup 编译器突然停止工作。自从我上次使用它以来,我刚刚安装了一个仍然颁发给同一家公司的新证书。

我已经以这种方式配置了签名工具(NAME 是证书中主题字符串的开头):

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

如果我删除 /t 和时间戳,标志总是失败,退出代码为 0x1。请注意,如果我从命令提示符运行相同的命令,则签名工作完美。

【问题讨论】:

  • signtool.exe 输出什么?
  • 从 Inno Setup 我没有得到太多细节。当我点击运行或编译时,我得到:Compiler Error! Sign Tool failed with exit code 0x1.

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


【解决方案1】:

您需要将 $f 添加到 SignTool 的末尾(在 IDE 设置中,而不是在脚本中),以便实际传递要签名的文件的名称。这就是您收到“缺少文件名”错误的原因。

请参阅Inno help file 中的示例。

【讨论】:

    【解决方案2】:

    显然,首先要尝试的是独立运行signtool.exe,看看它会输出什么错误。

    (我知道你已经尝试过了)。


    如果您无法通过这种方式重现问题,请从命令行运行 Inno Setup 编译器。您将看到signtool 的输出以及其他编译器的输出。

    如果signtool 失败,当从 Inno Setup GUI 编译时,它的控制台只是短暂闪烁,所以你没有机会看到它的输出。


    或者,您可以将 signtool.exe 包装到批处理文件中,并从 Inno 设置而不是 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"

    【讨论】:

    • 虽然您可能没有要求这样做,但根据您提供的信息,您永远无法得到更好的答案。这不是一个讨论论坛。这是问答网站。您只能得到与您的问题一样好的答案。
    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 2011-12-01
    • 2010-11-20
    • 1970-01-01
    • 2020-10-28
    • 2022-10-02
    • 2019-06-08
    • 1970-01-01
    相关资源
    最近更新 更多