msi de atualização Puppet no Windows

4

Estou executando o fantoche no windows e quero atualizar um pacote (java) que instalei usando um msi. Eu instalei o pacote usando

package { 'java':
  ensure => installed,
  provider => 'msi',
  source => 'S:\jdk1.6.0_30.msi',
  install_options => { 'INSTALLDIR' => 'C:\tools\java' },
}

Agora, quero atualizar para a compilação 31, por exemplo, então tentei executar

package { 'java':
  ensure => installed,
  provider => 'msi',
  source => 'S:\jdk1.6.0_31.msi',
  install_options => { 'INSTALLDIR' => 'C:\tools\java' },
}

isto não atualiza realmente desde que o pacote 'java' já está instalado. Quando tentei alterar o valor "assegurar" para o mais recente, o fantoche disse que o tipo de provedor deve ter recursos "atualizáveis".

Isso é apenas uma limitação do Windows? Existe uma maneira de atualizar a instalação Java existente usando pacotes msi?

    
por Jeff Storey 22.02.2012 / 06:42

3 respostas

3

Is this just a windows limitation?

O provedor MSI parece bastante limitado em relação aos outros provedores de pacotes. Isso certamente não é uma limitação do Windows / MSI. Acredito que o Windows forneça o que é necessário para que essas opções funcionem.

Is there a way to upgrade the existing Java install using msi packages?

Uma opção pode ser desistir do provedor msi do pacote e simplesmente fazer tudo com as instruções Exec. O comando msiexec tem muitas opções.

Você provavelmente também poderia criar uma maneira de organizar as coisas de modo que, se uma atualização precisar ser feita, a versão antiga seja removida primeiro. Em seguida, uma nova versão é instalada, você provavelmente teria que acompanhar a versão em um arquivo ou o registro em algum lugar, já que os provedores MSI não fornecem nenhuma informação sobre a versão.

    
por 22.02.2012 / 09:25
4

O plugin MSI do Windows para o Puppet não é capaz de entender as versões. Ao contrário dos sistemas de gerenciamento de pacotes do Linux, não há referência de catálogo de metadados que o Puppet precise analisar para quais versões estão disponíveis.

O texto a seguir foi escrito da mente e não foi testado, mas fornece uma maneira de ativar as atualizações. Sempre que você tiver uma nova versão, encadeie-a. Versões antigas podem ser removidas da lista quando você tiver certeza de que tudo foi atualizado.

package { 'java':
  ensure => absent,
  provider => 'msi',
  source => 'S:\jdk1.6.0_30.msi',
  install_options => { 'INSTALLDIR' => 'C:\tools\java' },
}

-> #chaining operator forces uninstall before install

package { 'java-1.6.0_31':
  ensure => installed,
  provider => 'msi',
  source => 'S:\jdk1.6.0_31.msi',
  install_options => { 'INSTALLDIR' => 'C:\tools\java' },
}
    
por 22.02.2012 / 10:27
0

Atualização: o provedor msi foi substituído pelo provedor windows , qual é versionable . Agora deve funcionar como esperado.

    
por 18.07.2014 / 18:49