【问题标题】:Can't sign (un)installer with Inno Setup [duplicate]无法使用 Inno Setup 签署(卸载)安装程序 [重复]
【发布时间】:2015-01-14 18:03:24
【问题描述】:

我安装了 Inno Setup 和 Inno Script Studio,以及 Visual Studio 2013。我有一个数字证书,受密码保护,名为 certificate.p12。我还安装了 Windows 8.1 驱动程序 SDK(尽管我运行的是 Windows 7 Professional x64)。我包含在我的安装程序中的编译输出已经签名。

我使用名为 my_signtool 的签名工具和以下命令配置了 Inno Script Studio:

"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe" sign /f "z:\full\path\to\certificate.p12" /p "password" $f

...在我的.iss 文件中,我有:

SignTool=my_signtool

在我的计算机上使用此设置,它可以完美运行。我编译了项目,Inno Setup 会自动对安装程序及其卸载程序进行签名。

但是,我有一个同事应该是完全相同的设置。他拥有 Visual Studio 2013、Inno Setup 和 Inno Script Studio、证书副本及其密码。当他尝试编译它时,Inno Setup 失败,说尝试针对uninst.e32.tmp 运行signtool 返回0x1。当他运行它尝试在命令提示符中手动运行的确切命令时,它会通过说明 uninst.e32.tmp 不可用而失败,但这似乎很正常,因为我怀疑 Inno Setup 只是在错误发生后自行清理(或者是?)。

我尝试在签名工具的定义中将引号替换为$q,但无济于事。事实上,除了signtool.exe 本身的路径之外,所涉及的路径中都没有空格。

我们的两个输出最初都是这样的。紧接着就是他们分歧的地方:我的继续运行,他抱怨签名工具失败并显示0x1

Starting compile.  [Monday, January 12 2015 at 10:11:03 AM]
Compiling script with Inno Setup 5.5.5 (a) [ISDLLCompileScriptA]

[PreCompile] Processing.
[PreCompile] Processing is still being tested.
[PreCompile] Processing finished.

[ISPP] Preprocessing.
[ISPP] Preprocessed.

Parsing [Setup] section, line 14
...
Parsing [Setup] section, line 41
Reading file (WizardImageFile)
   File: C:\Program Files (x86)\Inno Setup 5\WIZMODERNIMAGE.BMP
Reading file (WizardSmallImageFile)
   File: C:\Program Files (x86)\Inno Setup 5\WIZMODERNSMALLIMAGE.BMP
Preparing Setup program executable
   Updating icons (SETUP.E32)
   Running Sign Tool command: "C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe" sign /f "z:\full\path\to\certificate.p12" /p "password" "Z:\full\path\to\uninst.e32.tmp"

你猜我忽略了哪些简单的细节,我的环境每次都能正常工作,但即使配置相同,他也会失败?

【问题讨论】:

  • 他一定是在签名工具命令中有错字,因为现在可以将其更改为与我的匹配(路径更改除外)。但是,保留这个问题以防它帮助某人使用 Inno Setup 进行签名。
  • 这是旧的,但我最近遇到了类似的问题。就我而言,编译输出文件夹(创建设置文件的位置)位于我的保管箱文件夹中。我遇到错误说“无法找到 unist.e32.tmp”和“文件正在被另一个进程使用”。 “文件正在被另一个进程使用”很容易通过 Dropbox 同步文件来解释。但是 unist.e32.tmp 是最持久的错误消息,我最终通过将编译输出文件夹更改为不同的文件夹(在我的情况下是我的文档)来消除它。我无法解释为什么会这样,但确实有效!

标签: visual-studio-2013 inno-setup digital-signature


【解决方案1】:

我遇到了同样的问题,只需要以管理员身份运行 Inno Script Studio,然后就没有问题了。

【讨论】:

    【解决方案2】:

    我也遇到了这个问题,但是以管理员身份运行并没有解决问题。最后,我无法解释,但我更改了获取时间戳的位置,然后一切正常——尽管还有其他事情让我失望。

    我正在使用 InnoSetup 5.5.9 和 signtool。我添加了一个我定义为的 SignTool:

    "C:\PATH_TO_KSIGN\kSign\signtool.exe" 签名 /f "MYCERT.pfx" /t "http://tsa.starfieldtech.com" /p "MYPASSWORD" $f

    示例页面中的标准时间戳字段是“http://timestamp.comodoca.com/authenticode”。如果我使用它,该过程将因原始问题中的错误而失败。

    让我感到震惊的另一件事是,如果我通过 InnoSetup 运行生成的设置构建,它会告诉我“发布者:未知”。但是,如果我使用相同的安装程序并在另一台机器上运行它,那么它会得到正确的 Publisher。

    我希望这可以帮助别人!

    -乔纳森

    【讨论】:

      猜你喜欢
      • 2021-01-07
      • 2018-05-04
      • 1970-01-01
      • 2018-04-11
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多