2013-04-04 72 views
10

我使用[run]部分修改了一些支持commandeline的commandmerit.exe的編解碼器的優值。inno設置參數在[RUN]部分中用引號

所以語法是:

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

顯示流動的錯誤:

Mi在參數上錯位或錯位。

如果我把這個行:顯示

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不懂的參數,因此安裝完成後的優點仍然不變

回答

21

要報價添加到參數,必須在每個報價翻倍,然後把周圍的整個價值的報價。

你的第二次嘗試是接近,但你忘記了中間的。

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

是的,現在它的工作,感謝deanna和jachuate的幫助 – 2013-04-05 10:31:33

+0

那麼這是我的第二個猜測......爲你+1,迪安;) – jachguate 2013-04-05 21:59:15

3

我可以看到兩個不同的東西在你的問題

首先,{在inno setup中有一個特殊的含義,因爲它是一個常量的開始。所以,你必須將{加倍,例如{{。沒有必要轉義右括號,因爲只有當它是該常量的開始時,它才視爲常量的結尾。

二是,你試圖通過"作爲字符串的一部分,但在這種情況下,似乎沒有必要,因爲在命令行參數"字符的目的是允許使用空格內一個參數,但是你的參數都沒有空格。

所有這一切說,你必須嘗試這樣寫你的命令:

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

感謝POR答覆jachguate,但EXE原語法是: Commandmerit.exe 「{} E2B7DF46-38C5-11D5-91F6-00104BDB8FF9」 「的0x800000」 以其「{...} 「」..「來自commandmerite.exe的原始開發人員 – 2013-04-04 21:19:39

+0

是的,我知道!你試過我的解決方案嗎? – jachguate 2013-04-04 21:55:40

+2

如果你需要在參數中加雙引號,所有的都加上:'參數:「」「{F8FC6C1F-DE81-41A8-90FF-0316FDD439FD}」「」「0x10000000」「」;' – Deanna 2013-04-05 10:08:00