我使用[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
不理解参数,因此在安装程序完成后,优点仍未改变
答案 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}"