共用方式為


排序修補程式

從 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 檔案) 。 只有在其資料庫轉換能夠取得 產品代碼版本語言升級程式碼 時,才會在特定序列中套用 修補程式 , 安裝程式會從序列中排除任何無法套用的修補程式。

  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 資料表來依其撰寫順序套用修補程式的範例,請參閱 多個修補範例