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

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

我使用

[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}"

显示流动错误:

未知常量......使用两个连续的“{”if......

如果我写下这一行:

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

然后没有显示错误,但似乎

commandmerite.exe
不理解该参数,所以安装程序完成后优点仍然没有改变。

configuration inno-setup
2个回答
48
投票

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

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

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

5
投票

我可以在你的问题中看到两件不同的事情。

首先,

{
在inno setup中具有特殊含义,因为它是常量的开始。所以,你必须通过加倍来逃避
{
,例如
{{
。无需转义右括号,因为只有当它是常量的开始时,它才会被视为常量的结束。

其次,您试图将

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

尽管如此,您必须尝试像这样编写命令:

[run]
Filename: "{app}\Commandmerit.exe"; Parameters: {{F8FC6C1F-DE81-41A8-90FF-0316FDD439FD} 0x10000000; WorkingDir: "{app}"
© www.soinside.com 2019 - 2024. All rights reserved.