共用方式為


排序補丁

從 Windows Installer 3.0 開始,作者可以將修補程式排序資訊新增至 MsiPatchSequence 數據表中的修補程式套件資料庫。 安裝程式可以使用這項資訊來判斷哪些修補程式適用於安裝套件、判斷最佳修補順序,以及以固定順序安裝修補程式,而與提供給系統的順序無關。

Windows Installer 2.0:不支援。 Windows Installer 3.0 之前的 Windows Installer 版本會依照提供給系統的順序安裝修補程式,而不論它們是否包含 MsiPatchSequence 數據表。

使用修補程式排序功能所需的條件如下。

  • 修補程式套件 (.msp 檔案) 必須具有包含排序資訊的 MsiPatchSequence 數據表。 安裝程式會依照提供給系統的順序,安裝沒有 MsiPatchSequence 數據表的修補程式。
  • 修補程式是使用 Windows Installer 3.0 或更新版本來安裝。

Windows Installer 3.0 版具有下列功能,應用程式可用來判斷最佳修補順序。

  • MsiDeterminePatchSequence 函式會取得修補程式清單,並決定可以套用至已安裝產品的順序。 此函式適用於系統上已安裝的任何修補程式或產品。
  • MsiDetermineApplicablePatches 函式會取得修補程式清單,並決定可以套用至已安裝產品的順序。 此函式不會考慮系統上已安裝的任何修補程式或產品。

Windows Installer 3.0 版可以將多個修補程式套用至單一修補安裝中的產品。 修補程式群組可以包含修補程式,包括修補順序資訊(MsiPatchSequence 數據表)和未修補的修補程式。 Windows Installer 會依照提供給系統的順序,安裝沒有此數據表的修補程式套件。 安裝程式會考量缺少 MsiPatchSequence 資料表的修補程式套件,但這些套件已按照下一節所述的方法被標示為過時或被取代的修補程式。

當 Windows Installer 3.0 版安裝多個修補程式時,它會遵循下列步驟來判斷個別修補程式套用至產品的順序:

  1. 已安裝但缺少 MsiPatchSequence 表格的修補程式會按照套用至產品的順序排列。 套用的第一個修補程式會首先排列在序列中。

  2. 沒有 MsiPatchSequence 數據表的新修補程式 會放在序列中。 這些修補程式正由當前的修補安裝套用。 它們會按照提供給系統的順序擺放,並置於步驟 1 中所有修補程式之後。

  3. 已淘汰的修補程式會從修補程式序列中排除。

    注意

    修補程式套件可以在 修訂編號摘要 屬性中指定要被修補程式移除的已淘汰修補程式的明確清單。 此清單適用於早於 3.0 版的 Windows Installer 版本。 只有在修補程式沒有 MsiPatchSequence 數據表時,Windows Installer 3.0 版才會從序列中移除標示為過時的修補程式。

     

  4. 安裝程式會逐步執行修補順序,並判斷指定序列中適用的修補程式。 將多個修補程式套用至產品時,序列中的每個修補程式也會轉換產品的安裝資料庫(.msi 檔案)。 只有在其資料庫轉換能夠將 的原始程式碼版本語言,以及 upgradecode 套用到產品資料庫的所有先前 修補程式 套件轉換,才適用於特定序列。 安裝程式會從序列中排除任何無法套用的修補程式。

  5. 安裝程式會開始將具有序列資訊的修補程式放入其 MsiPatchSequence 資料表中。 次要升級 具有 MsiPatchSequence 資料表的修補程式會按照其升級後的產品版本從低到高的順序,排列在先前步驟中已排序的修補程式之後。 然後,Windows Installer 會排除此順序中無法套用的任何次要升級修補程式。

  6. 小型更新 修補程式,以 次要升級為目標, 具有 MsiPatchSequence 數據表,會指派給序列中最高版本的次要升級修補程式。

  7. 所有 小型更新 修補程式,在先前的步驟之後仍保持未指派,且具有 MsiPatchSequence 數據表,都會放在順序中,然後在具有 MsiPatchSequence 數據表的第一個 次要升級 之前,以及 .msi 安裝資料庫和不含 MsiPatchSequence 數據表的任何修補程序之後。 然後,Windows Installer 會排除此序列中無法套用的任何小型更新修補程式。

  8. Windows Installer 3.0 版會排除序列中已取代的修補程式。 當修補程式取代修補程式順序稍早發生的修補程式時,修補程式會包含先前修補程式中的所有修正程式。 不再需要先前的修補程式。 Windows Installer 需要 MsiPatchSequence 資料表中的資訊,才能移除被取代的修補程式。

    注意

    新的修補程式必須被設計為能取代所有修補程式系列中先前的修補程式,這樣才會有效地取代一開始的一組修補程式。 小型更新 修補程式只能取代小型更新。 次要升級 可以取代小型更新和其他次要升級。

     

  9. 包含 MsiPatchSequence 數據表的小型更新 修補程式,根據其 MsiPatchSequence 數據表中的排序資訊,在產品版本內排序。 這會決定最終修補順序。

可以從修補序列中移除不應再使用的修補程式。 如需如何從修補序列中排除修補程式的詳細資訊,請參閱 排除修補程式

欲了解如何使用 MsiPatchSequence 資料表以原始編寫順序套用修補程式的範例,請參閱 多個修補範例