Параметр Inno Setup с кавычками в разделе [RUN]

Я использую раздел [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}"

Ответ 2

В вашей проблеме можно увидеть две разные вещи.

Во-первых, { имеет особое значение в инно-настройке, потому что это начало константы. Таким образом, вам нужно избежать {, удвоив его, например. {{. Нет необходимости избегать закрывающей скобки, потому что она рассматривается как конец константы, только если она является началом для этой константы.

Во-вторых, вы пытаетесь передать " как часть строки, но в этом случае это кажется ненужным, поскольку цель символа " в параметрах командной строки - разрешить использование пробелы внутри одного параметра, но ни один из ваших параметров не имеет пробелов.

Все, что сказано, вы должны попробовать написать свою команду следующим образом:

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