使用可轉移元件
傳輸元件的一般用法是準備產品,以在系統升級期間重新安裝。 安裝套件的作者會指定在系統升級期間需要交換的元件,做為具有可轉移屬性。 當使用者稍後升級系統時,必須重新安裝產品。 重新安裝之後,安裝程式會移除先前的元件,並安裝較新的元件,而不需要安裝整個產品。
在安裝套件中包含兩個可轉移的元件
在安裝套件中包含這兩個可轉移的元件。
將這兩個可轉移的元件撰寫到元件數據表中,與一般元件相同。 每個可轉移的元件都必須在 ComponentId 資料行中指定自己的唯一 GUID。
在每個 可轉移元件的 [元件] 資料表的 [屬性] 數據行中包含 msidbComponentAttributesTransitive 位。 如果設定此位,安裝程式會在重新安裝時,重新評估 Condition 資料行中的 語句值。
如果值先前為 False 且已變更為 True,安裝程式會安裝元件。
如果值先前為 True,且已變更為 False,則即使元件有其他產品做為客戶端,安裝程式也會移除元件。
注意
除非設定可轉移位,否則即使條件語句在產品的後續維護安裝上評估為 False,元件仍會保持啟用。 條件必須僅以計算機狀態為基礎。 請勿根據命令行上設定的用戶狀態或屬性搭配條件使用,因為這可能會導致安裝程式要求在不同使用者使用時重新安裝產品。
在 Control 資料表的 [條件] 欄位中輸入互補條件表示式,讓第一個可轉移元件的條件變更為 False 時,第二個可轉移元件的條件會變更為 True。 這會導致在重新安裝應用程式時移除第一個元件,並安裝第二個元件。
必須重新安裝產品,才能切換可轉移的元件。 因此,套件作者需要為使用者提供重新安裝產品的方法,以及設定 REINSTALLMODE 屬性的模式。 基本上有三種方式可以觸發重新安裝:
- 透過使用者介面執行並設定重新安裝,方法是撰寫使用完整UI的套件。
- 使用 msiexec /f 從命令行執行重新安裝,然後從 /f 命令行選項清單中選取模式。
- 讓應用程式呼叫 MsiReInstallProduct 或 MsiReInstallFeature。
位應該只搭配以計算機狀態為基礎的條件使用。 請勿根據命令行上設定的用戶狀態或屬性搭配條件使用,因為這可能會導致安裝程式要求在不同使用者使用時重新安裝產品。
注意
除非已為元件設定 Attributes 數據行中的可轉移位,否則即使 [條件] 資料行中的條件語句在產品的後續維護安裝上評估為 False,該元件仍會在安裝時保持啟用狀態。
在大部分情況下,如果應用程式包含可轉移的元件,Windows Installer 會要求應用程式的來源修復或升級應用程式。 在這些情況下,原始設備製造商所運送的系統還原CD-ROM無法運作,而且必須提供應用程式的實際安裝來源。