多個修補範例

下列範例示範如何使用 Windows Installer 3.0 和更新版本,依其撰寫順序套用修補程式。

範例

在此範例中,有三個修補程式:QFE1、QFE2 和 ServicePack1,而且每個修補程式都有 MsiPatchSequence 資料表。 這些修補程式已撰寫成套用至應用程式 1.0 版。

修補程式名稱 修補程式類型 序號
QFE1 小型更新 1.1.0
QFE2 小型更新 1.2.0
ServicePack1 次要升級 1.3.0

 

每個修補程式的 MsiPatchSequence 資料表只有一筆記錄,其中包含修補程式系列、產品代碼和序號。 這三個修補程式全都套用至相同的產品,並屬於名為 AppPatch 的相同修補程式系列。 這些修補程式都沒有 msidbPatchSequenceSupersedeEarlier 屬性。

QFE1小型更新MsiPatchSequence 資料表

PatchFamily ProductCode 順序 屬性
AppPatch {18A9233C-0B34-4127-A966-C257386270BC} 1.1.0

 

QFE2小型更新MsiPatchSequence 資料表

PatchFamily ProductCode 順序 屬性
AppPatch {18A9233C-0B34-4127-A966-C257386270BC} 1.2.0

 

ServicePack1次要升級MsiPatchSequence 資料表

PatchFamily ProductCode 順序 屬性
AppPatch {18A9233C-0B34-4127-A966-C257386270BC} 1.3.0

 

如果使用者安裝 1.0 版的產品,然後套用 QFE2,然後在稍後決定套用 QFE1,Windows Installer 可確保在 QFE2 之前套用產品的有效修補程式應用程式順序。 如果使用者套用 ServicePack1,則會在稍後一起套用 QFE2 和 QFE1,Windows Installer 可確保產品的有效修補程式應用程式順序在 QFE2 和 ServicePack1 之前為 QFE1。

如果 ServicePack1 在其MsiPatchSequence 資料表的 Attributes資料行中設定msidbPatchSequenceSequenceSupersedeEarlier,這表示 Service Pack 包含 QFE1 和 QFE2 中的所有變更。 在此情況下,套用 ServicePack1 時不會套用 QFE1 和 QFE2。

Windows Installer 2.0: 不支援。 Windows Installer 3.0 之前的版本每個交易只能安裝一個修補程式,而且修補程式會依提供的順序套用。 在上述範例中,如果先套用 QFE2,然後套用 QFE1,即兩筆交易,修補程式會套用至序列 QFE2 中應用程式 1.0 版,後面接著 QFE1。 如果先套用 ServicePack1,則 QFE1 或 QFE2 無法在稍後的交易中套用,因為 ServicePack1 是變更應用程式版本的次要升級。 QFE1 和 QFE2 只能套用至應用程式的 1.0 版。