從 Windows Installer 3.0 版開始,您可以建立並安裝可單獨卸載的修補程式,並且可以以任意順序進行,而不必卸載並重新安裝整個應用程式和其他修補程式。 Windows Installer 3.0 也可讓您使用包含修補程式排序資訊的 MsiPatchSequence 數據表 撰寫 修補程式套件。 使用早於 Windows Installer 3.0 的 Windows Installer 版本,從應用程式移除特定修補程式的唯一方法是卸載整個已修補的應用程式,然後重新安裝而不重新套用任何要移除的修補程式。
是否可以卸載修補程式取決於修補程式的撰寫方式、用來安裝修補程式的 Windows Installer 版本,以及修補程式對應用程式所做的變更。 如果修補程式無法卸載,則移除修補程式的唯一方法是卸載整個應用程式並重新安裝,而不需要套用要移除的修補程式。
您可以使用命令行選項、腳本介面,或從另一個應用程式呼叫 MsiRemovePatches,卸載一或多個修補程式。 如需如何卸載修補程式的詳細資訊,請參閱 卸載修補程式。
MSIPATCHREMOVE 屬性的值會列出要卸載的修補程式。 針對清單中的每個修補程式,安裝程式會驗證修補程式是否可卸載。 如果使用者沒有移除修補程式的許可權,則修補程式對產品而言未知、修補程式原則會防止移除,或修補程式標示為無法卸載,安裝程式會傳回錯誤,指出安裝交易失敗。 如需決定修補程式是否無法卸載的詳細資訊,請參閱 可卸載的修補程式。
一旦修補程式驗證為卸除式,安裝程式就會從修補程式應用程式順序中移除修補程式。 如需 Windows Installer 3.0 如何決定套用修補程式時要使用的順序的詳細資訊,請參閱 排序修補程式。 請注意,從序列中移除修補程式可能會導致標示為過時或取代的修補程式變成作用中。
選取移除的所有修補程式都會列在 MsiPatchRemovalList 屬性中。 這個屬性是由安裝程式設定的私用屬性,可用於條件表示式,或 自定義動作查詢。 屬性包含要移除之修補程式的程式代碼 GUID 清單。 自定義動作可以藉由呼叫 MsiGetPatchInfoEx 或 Patch Object的 PatchProperty 屬性,來判斷已套用、過時或取代修補程式的安裝狀態。
拿掉修補程式之後,應用程式的狀態與從未安裝修補程式的狀態相同。 可能的話,安裝程式會將程式限制為受移除修補程序影響的功能子集。 安裝程式會自動將 REINSTALL 屬性設定為受影響的功能清單。 已移除修補程式新增的檔案,並覆寫修補程式修改的檔案。 檔案和登錄項目將還原到產品預期版本,不包括修補程式。 由修補程式新增的功能和元件將會自應用程式中解除註冊。 請注意,如果內容是由另一個仍然適用的修補程式使用,則修補程式新增的其他內容仍可保留在用戶的計算機上。
如果修補程式更新共用元件的檔案,變更會影響共用元件的所有應用程式。 再次移除修補程式時,變更會影響共用元件的所有應用程式。 這表示一個應用程式移除修補程式可以將共用元件的檔案還原到另一個應用程式所需的較低版本。 這可能會修正第一個應用程式,但導致第二個應用程式停止運作。 在此情況下,您可以使用重新安裝功能或應用程式 中所述的方法重新安裝第二個應用程式,以修復第二個應用程式。 這會還原已修補的檔案版本。
相關主題