Inno Setup iscc 编译器命令行上指定的符号命令中的引号和空格

问题描述 投票:0回答:1

使用 Inno Setup,我最近尝试从调用 Compil32 批量创建设置转向使用“iscc”。 以下无需签名即可正常工作(从 C# 代码的批处理文件执行):

iscc "C:\Inno Setup Scripts\test.iss"

但是当我尝试添加签名时,未创建设置:

iscc "C:\Inno Setup Scripts\test.iss" /Ssigntool="C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool" sign /f "C:\Test PFX\test.pfx" /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a /p codeSigningPassword $f

codeSigningPassword
是C#代码中设置的密码。

我怀疑这可能与我放置引号有关 - 我认为它们应该绕过任何有空格的文件路径。

inno-setup code-signing signtool
1个回答
2
投票

带有

/S...
命令行的整个
signtool
参数必须用双引号引起来。内部引号需要转义为
$q
:

iscc "C:\Inno Setup Scripts\test.iss" "/Ssigntool=$qC:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool$q sign /f $qC:\Test PFX\test.pfx$q /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a /p codeSigningPassword $f"

您正在尝试的命令行语法意味着您的 .iss 文件需要包含相应的

SignTool
指令:

[Setup]
SignTool=signtool
SignedUninstaller=yes

参见 https://jrsoftware.org/ishelp/index.php?topic=setup_signtool


替代方案是:

  • 使用
    signtool
    指令在 .iss 文件中定义
    SignTool
    命令行;
  • signtool
    命令行包装到批处理文件中,并在
    iscc
    命令行中使用批处理文件路径。
© www.soinside.com 2019 - 2024. All rights reserved.