[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 Section [Run] with condition
Inno setup打包软件run段了存在.EXE或者.BAT问题?
在Inno Setup中[Run]程序无法识别[不可用]环境变量