可卸載的修補程式

是否可以卸載修補程式取決於修補程式的撰寫方式、用來安裝修補程式的 Windows Installer 版本,以及修補程式對應用程式所做的變更。 如果修補程式無法卸載,則移除修補程式的唯一方法是卸載整個應用程式並重新安裝,而不套用要移除的修補程式。

您可以使用 命令列選項MsiRemovePatches 函式或 RemovePatches 方法 ,呼叫以 Windows Installer 3.0 版套用的修補程式卸載,如 卸載修補程式 一節中所述。 Windows Installer 會確認 MSIPATCHREMOVE 屬性中所列要移除的每個修補程式都可以卸載。 如果使用者沒有移除修補程式的許可權,則產品修補程式未知、修補程式原則會防止移除,或修補程式標示為無法卸載,安裝程式會傳回錯誤,指出安裝交易失敗。

Windows Installer 2.0: 不支援。 使用早于 Windows Installer 3.0 的 Windows Installer 版本所套用的修補程式無法卸載。

無法卸載的修補程式

在下列情況下,無法卸載套用至已安裝應用程式的修補程式 (.msp 檔案) 。 移除無法卸載的修補程式的唯一方法是卸載修補的應用程式,然後重新安裝應用程式,而不重新套用修補程式。 在此情況下,您必須重新套用您不想從應用程式移除的任何修補程式。

  • 使用小於 Windows Installer 3.0 的 Windows Installer 版本所套用的修補程式無法卸載。

  • 套用至已由系統管理員設定 DisablePatchUninstall 原則之電腦上所安裝之應用程式的修補程式無法卸載。 設定此 電腦原則時,即使系統管理員也無法卸載電腦上的修補程式。

  • 在其資料庫中沒有 MsiPatchMetadata 資料表的修補程式無法卸載。

  • MsiPatchMetadata 資料表中未包含下列資料列的修補程式無法卸載。 無法卸載公司、屬性和值的其他值修補程式。

    公司 屬性
    {Null} AllowRemoval 1

     

  • 修補程式已套用至使用者許可權不足而無法卸載修補程式的內容中安裝的應用程式。 下表中的「不允許」字表示系統管理員或非系統管理員使用者無法從此內容中安裝的修補應用程式卸載修補程式。 此表格中的「允許」一詞表示許可權不會防止系統管理員或非系統管理員使用者卸載修補程式,不過基於本節所討論的任何其他原因,仍然可能無法卸載修補程式。

    應用程式安裝內容 系統管理員卸載修補程式 非系統管理員卸載修補程式
    Per-Machine 允許 通常不允許 唯一的例外狀況是使用 (LUA) 修補套用修補程式。 標示為 LUA 修補程式的修補程式可由系統管理員或非系統管理員卸載。 LUA 修補僅適用于從媒體安裝個別電腦的套件,而且需要特殊撰寫。
    Per-User目前使用者的非受控使用者 允許 允許
    Per-User不同使用者的非受控使用者 不允許 不允許
    Per-User目前使用者管理 允許 不允許
    Per-User針對不同使用者管理 不允許 不允許

     

  • 修補程式所套用 的主要升級 無法卸載。 應用程式的主要升級應該藉由安裝升級的應用程式 (.msi 檔案) 而非修補程式來執行。

  • 套用至系統管理安裝的修補程式無法卸載。 不建議修補系統管理安裝。 使用者從系統管理映射安裝應用程式之後,應該在使用者的電腦上套用目前的修補程式集。 這可防止使用者電腦上快取的 套件程式碼 ,與系統管理安裝上的套件程式碼不同。 如果使用者電腦上快取的套件程式碼與系統管理安裝上的套件程式碼不同,請從系統管理安裝重新安裝應用程式,然後修補用戶端電腦。

  • 當修補程式將新內容新增至下列清單中的任何資料表時,Windows Installer 會將修補程式標示為無法卸載。 可卸載的修補程式可以將新的檔案、元件、登錄專案、元件或功能新增至安裝,方法是將新的資料列新增至此清單中未包含的資料庫資料表。

修補程式排序

移除修補程式

卸載修補程式

修補卸載自訂動作

MSIPATCHREMOVE

MsiEnumapplicationsEx

MsiGetPatchInfoEx

MsiRemovePatches