[Run] 部分中带引号的 Inno Setup 参数

Posted

技术标签:

【中文标题】[Run] 部分中带引号的 Inno Setup 参数【英文标题】:Inno Setup parameter with quotes in [Run] section 【发布时间】:2013-03-27 03:08:51 【问题描述】:

我使用[Run] 部分来修改一些带有支持命令行的commandmerit.exe 的编解码器的优点值。

所以语法是:

Commandmerit.exe "E2B7DF46-38C5-11D5-91F6-00104BDB8FF9" "0x800000"  

E2B7DF46-38C5-11D5-91F6-00104BDB8FF9 是编解码器的 CLSID,并且 0x800000 是新优点的值,但是当我把这行放在[Run] 部分时:

Filename: "app\Commandmerit.exe"; Parameters: ""F8FC6C1F-DE81-41A8-90FF-0316FDD439FD" "0x10000000""; WorkingDir: "app"

显示流动错误:

参数上的引号不匹配或放错位置。

如果我把这一行:

Filename: "app\Commandmerit.exe"; Parameters: """F8FC6C1F-DE81-41A8-90FF-0316FDD439FD" "0x10000000"""; WorkingDir: "app"

显示流动错误:

未知常数......使用两个连续的“”如果......

如果我把这一行:

Filename: "app\Commandmerit.exe"; Parameters: """F8FC6C1F-DE81-41A8-90FF-0316FDD439FD" "0x10000000"""; WorkingDir: "app"

然后没有显示错误,但似乎commandmerite.exe不理解参数,所以安装程序完成后优点仍然没有改变。

【问题讨论】:

【参考方案1】:

要为参数添加引号,您必须将每个引号加倍,然后在整个值周围加上引号。

您的第二次尝试很接近,但您忘记了中间的尝试。

Filename: "app\Commandmerit.exe"; Parameters: """F8FC6C1F-DE81-41A8-90FF-0316FDD439FD"" ""0x10000000"""; WorkingDir: "app"

【讨论】:

嗯,这是我的第二个猜测... +1 为你,迪安娜 ;)【参考方案2】:

我可以在您的问题中看到两种不同的东西。

首先, 在 inno 设置中具有特殊含义,因为它是常量的开始。所以,你必须通过加倍来逃避,例如。不需要转义右括号,因为只有当它是常量的开头时,它才会被视为常量的结尾。

其次,您尝试将" 作为字符串的一部分传递,但在这种情况下似乎没有必要,因为命令行参数中" 字符的目的是允许使用单个参数中的空格,但您的参数都没有空格。

说了这么多,你必须试着像这样写你的命令:

[run]
Filename: "app\Commandmerit.exe"; Parameters: F8FC6C1F-DE81-41A8-90FF-0316FDD439FD 0x10000000; WorkingDir: "app"

【讨论】:

感谢 por 回复 jachguate,但 exe 的原始语法是:Commandmerit.exe "E2B7DF46-38C5-11D5-91F6-00104BDB8FF9" "0x800000" 它带有 "..." ".." 来自 commandmerite.exe 的原始开发者 如果您需要在参数本身中加上引号,请将它们全部加倍:Parameters: """F8FC6C1F-DE81-41A8-90FF-0316FDD439FD"" ""0x10000000""";

以上是关于[Run] 部分中带引号的 Inno Setup 参数的主要内容,如果未能解决你的问题,请参考以下文章

Inno Setup, Pascal 字符串带双引号如何写

Inno Setup Section [Run] with condition

Inno setup打包软件run段了存在.EXE或者.BAT问题?

在Inno Setup中[Run]程序无法识别[不可用]环境变量

inno setup里在[run]中如何使用install实现静默安装?

Inno Setup 3 :语法解析