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