【问题标题】:Inno Setup parameter with quotes in [Run] section[Run] 部分中带引号的 Inno Setup 参数
【发布时间】: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不理解参数,所以安装程序完成后优点仍然没有改变。

【问题讨论】:

    标签: configuration inno-setup


    【解决方案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""";
    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    相关资源
    最近更新 更多