Я пытаюсь использовать 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
, прочтите параметры установки с кавычками или пробелами (it применяется к любому использованию install_options
, а не только к указанному провайдеру).