在[RUN]部分中带引号的inno设置参数

时间:2013-04-04 20:49:35

标签: inno-setup

我使用[run]部分使用支持commandeline的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不理解参数,因此在安装程序完成后,优点仍未改变

2 个答案:

答案 0 :(得分:29)

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

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

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

答案 1 :(得分:4)

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

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

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

所有这一切,你必须尝试这样写你的命令:

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