Agente de Marionetes do Windows - Manifesto de Pacote - Barras Extra

2

Estou tentando usar o Puppet para instalar um aplicativo que requer que os parâmetros a serem passados para o MSI subjacente seja uma maneira específica.

Exemplo:

package { 'Vendor Application':
  ensure => '8.4.12.0',
  source => 'C:\setup.exe',
  install_options => '/S /v"REBOOTPROMPT=Supress"'
}

Tenho notado que não importa se eu uso aspas duplas para o install_options e escape as aspas duplas internas ou aspas simples do usuário, parece que toda vez que o Puppet está adicionando uma barra na frente das aspas duplas. / p>

Veja abaixo a saída --debug depois de executar "puppet apply test.pp"

Debug: Executing: 'cmd.exe /c start "puppet-install" /w "C:\setup.exe" "/S /v\"REBOOTPROMPT=Supress\""'

Alguém mais encontrou isso e descobriu como evitar que a barra extra fosse adicionada?

Obrigado!

    
por Douglas Plumley 03.01.2018 / 22:16

1 resposta

1

O Puppet adiciona automaticamente as cotações quando há espaços em install_options . Isso é por design. No entanto, isso é bastante indesejável quando você deseja controlar exatamente como a entrada é passada, o que é quase sempre que você está usando install_options . Devido à cotação automática, ele está adicionando \ para escapar das cotações existentes, o que também é um comportamento indesejável quando se trata do Windows.

Então, seu recurso aqui:

package { 'Vendor Application':
  ensure => '8.4.12.0',
  source => 'C:\setup.exe',
  install_options => '/S /v"REBOOTPROMPT=Supress"'
}

Deve ser aprovado como:

package { 'Vendor Application':
  ensure          => '8.4.12.0',
  source          => 'C:\setup.exe',
  install_options => ['/S', '/v"REBOOTPROMPT=Suppress"'],
}

As correções de formatação não são obrigatórias, mas siga o Guia de estilo de marionetes . Também corrigimos um erro de digitação ( REBOOTPROMPT= Suprimir ).

Além disso, é provável que você precise defini-lo desta forma, pois ele será passado por cmd.exe /c (como você viu acima):

package { 'Vendor Application':
  ensure          => '8.4.12.0',
  source          => 'C:\setup.exe',
  install_options => ['"', '/S', '/v""REBOOTPROMPT=Suppress""', '"'],
}

Se você realmente quiser entender profundamente como determinar a aprovação de install_options , leia instala opções com aspas ou espaços (aplica-se a qualquer uso de install_options , não apenas com o provedor mencionado).

    
por 04.01.2018 / 06:07