Я пытаюсь использовать Puppet для установки приложения, которое требует, чтобы параметры передавались в базовый MSI определенным образом.
Пример:
package { 'Vendor Application':
ensure => '8.4.12.0',
source => 'C:\setup.exe',
install_options => '/S /v"REBOOTPROMPT=Supress"'
}
Я заметил, что не имеет значения, использую ли я двойные кавычки для install_options и избегаю внутренних двойных кавычек или пользовательских одинарных кавычек, кажется, что каждый раз, когда Puppet добавляет косую черту перед двойной кавычкой.
См. Ниже вывод --debug после запуска "puppet apply test.pp"
Debug: Executing: 'cmd.exe /c start "puppet-install" /w "C:\setup.exe" "/S /v\"REBOOTPROMPT=Supress\""'
Кто-нибудь еще сталкивался с этим и придумал, как предотвратить добавление лишней косой черты?
Спасибо!
Puppet автоматически добавляет кавычки, если в них есть пробелы. install_options
. Это сделано намеренно. Однако это совершенно нежелательно, если вы хотите точно контролировать, как передается ввод, что почти каждый раз, когда вы используете install_options
. Из-за автоматического цитирования он добавляет \
чтобы избежать существующих кавычек, что также является нежелательным поведением в Windows.
Итак, ваш ресурс здесь:
package { 'Vendor Application':
ensure => '8.4.12.0',
source => 'C:\setup.exe',
install_options => '/S /v"REBOOTPROMPT=Supress"'
}
Следует передать так:
package { 'Vendor Application':
ensure => '8.4.12.0',
source => 'C:\setup.exe',
install_options => ['/S', '/v"REBOOTPROMPT=Suppress"'],
}
Исправления форматирования не требуются, но следуйте инструкциям Руководство по стилю кукол. Также исправлена опечатка (REBOOTPROMPT=
Подавить).
Более того, скорее всего, вам нужно будет установить его так, поскольку он будет проходить через cmd.exe /c
(как вы видели выше):
package { 'Vendor Application':
ensure => '8.4.12.0',
source => 'C:\setup.exe',
install_options => ['"', '/S', '/v""REBOOTPROMPT=Suppress""', '"'],
}
Если вы действительно хотите глубоко понять, как определить, что нужно сдать install_options
, читать параметры установки в кавычках или пробелах (это относится к любому использованию install_options
, а не только с упомянутым провайдером).