Windows
Windows 上的 Puppet 升級 msi
我在 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 提供程序不會為您提供有關該版本的任何資訊。