【发布时间】: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