Windows

Windows 上的 Puppet 升級 msi

  • July 18, 2014

我在 Windows 上執行 puppet,我想升級使用 msi 安裝的包(java)。我使用安裝包

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

例如,現在我想升級到 build 31,所以我嘗試執行

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

這實際上並沒有升級,因為已經安裝了包“java”。當我嘗試將“確保”值更改為最新時,puppet 說提供程序類型必須具有“可升級”功能。

這只是Windows限制嗎?有沒有辦法使用 msi 包升級現有的 Java 安裝?

這只是Windows限制嗎?

相對於其他軟體包提供商,MSI 提供商似乎非常有限。這當然不是 Windows/MSI 的限制。我相信 Windows 提供了使這些選項起作用所需的東西。

有沒有辦法使用 msi 包升級現有的 Java 安裝?

一種選擇可能是放棄包 msi 提供程序,而只需使用 Exec 語句完成所有操作。該msiexec命令有很多選項。

您可能還可以想出一種安排方式,以便在需要升級時首先清除舊版本。然後安裝一個新版本,您可能必須在某個文件或系統資料庫中跟踪版本,因為 MSI 提供程序不會為您提供有關該版本的任何資訊。

引用自:https://serverfault.com/questions/362525