Назад | Перейти на главную страницу

MSI для обновления марионетки в windows

Я запускаю марионетку в Windows и хочу обновить пакет (java), который я установил с помощью msi. Я установил пакет, используя

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

Теперь я хочу обновить, например, до сборки 31, поэтому я попытался запустить

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

на самом деле это не обновление, так как пакет java уже установлен. Когда я попытался изменить значение «обеспечения» на последнее, марионетка сказала, что тип поставщика должен иметь функции «обновляемые».

Это просто ограничение окна? Есть ли способ обновить существующую установку Java с помощью пакетов msi?

Плагин Windows MSI для Puppet не поддерживает версии. В отличие от систем управления пакетами Linux, у Puppet нет ссылки на каталог метаданных, чтобы узнать, какие версии доступны.

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

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' },
}

Это просто ограничение окна?

В Провайдер MSI кажется довольно ограниченным по сравнению с другими поставщиками пакетов. Это, конечно, не ограничение Windows / MSI. Я считаю, что Windows предоставляет все необходимое, чтобы эти параметры работали.

Есть ли способ обновить существующую установку Java с помощью пакетов msi?

Одним из вариантов может быть отказ от поставщика пакета msi и просто сделать все это с помощью операторов Exec. В msiexec команда имеет множество параметров.

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

Обновление: msi поставщик был заменен окна провайдер, который versionable. Теперь должно работать, как ожидалось.