在Inno Script Studio中,使用指向signtool.exe的带有空格的完整路径进行签名失败,并显示&qu



在Inno设置中,我的签名工具定义为:

cmd /k "C:Program Files (x86)Windows Kits10bin10.0.19041.0x64signtool.exe" sign /t http://timestamp.comodoca.com /n "My Company" $f

准备cmd /k(如Inno Setup中所建议的-使用"Sign Tool failed with exit code 0x1"进行签名失败(表明,签名工具本身实际上没有问题,而是Inno Setup如何调用它,生成以下消息:

'C:Program' is not recognized as an internal or external command, operable program or batch file.

很明显,它在第一个空格处切断了通往signtool的路径,尽管我引用了它。我甚至试着用$q替换引号,看看这是否有什么不同。(事实并非如此。(我认为解析器拒绝引号是不恰当的行为,因为指令中明确表示要粘贴您在命令行中使用的确切文本,并且示例本身包括引号(https://revolution.screenstepslive.com/s/revolution/m/10695/l/563371-signing-installers-you-create-with-inno-setup)。

从命令行开始,一切都很完美。出于某种原因,Inno Setup没有正确调用signtool

添加2020-07-14:

Inno Setup的例子,复制自他们的网站:

"C:Program FilesMicrosoft Platform SDK for Windows Server 2003 R2Binsigntool.exe" sign /f "C:MY_CODE_SIGNING.PFX" /t http://timestamp.comodoca.com/authenticode /p MY_PASSWORD $f

我的版本,在没有cmd /k:的情况下使用

"C:Program Files (x86)Windows Kits10bin10.0.19041.0x64signtool.exe" sign /t http://timestamp.comodoca.com /n "My Company" $f

正如你所看到的,我们以同样的方式使用引号。我会检查更新——我可能应该先检查一下。当我有时间的时候,我会恢复signtool的定义,看看更新是否能修复它

此外,我本应该更清楚一点。我是Inno Setup的新手,我没有想过要澄清这一点。我正在通过Inno Script Studio进行编译。我突然想到,这可能与特定版本的Script Studio中的行为有关,而不是编译器本身,但我对内部工作原理的了解还不够,只能猜测。

在做了更多的修补之后,我现在可以肯定这一定是Inno Setup的一个错误。我围绕实现了工作,如下所示:

  1. 使用提升的权限打开命令窗口
  2. 更改为我创建的名称中没有空格的目录:cd bin
  3. 创建指向signtool.exe所在目录的"无空间"符号链接:mklink /d "Windows10SDK" "C:Program Files (x86)Windows Kits10bin10.0.19041.0x64"
  4. 输入使用符号链接的新符号工具定义:

C:binWindows10SDKsigntool.exe sign /t http://timestamp.comodoca.com /n "My Company" $f

就这样!由于signtool.exe的路径中不再有空格字符,Inno Setup现在可以正确执行签名,一切都很顺利。

我会将此报告为错误,并在需要时进行更新。

我使用:

#define SignedDesc "$q" + MSA + "$q"
#define SignedPfx "$qd:My Certificate2018My Certificate.pfx$q"
#define SignedTimeStamp "$qhttp://timestamp.verisign.com/scripts/timestamp.dll$q"
#define SignedPw "$q~~~~~~~$q"
SignTool=SignTool /d {#SignedDesc} /du $q{#AppURL}$q /f {#SignedPfx} /p {#SignedPw} /t {#SignedTimeStamp} /v $f

我的签名工具配置为:

$qC:Program Files (x86)Windows Kits10bin10.0.16299.0x86Signtool.exe$q sign $p

您必须使用$q,它是一个引号。

相关内容

最新更新