多個修補範例
下列範例示範如何使用 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 | 產品代碼 | 序列 | 屬性 |
---|---|---|---|
AppPatch | {18A9233C-0B34-4127-A966-C257386270BC} | 1.1.0 |
用於 QFE2 的 MsiPatchSequence 數據表小型更新。
PatchFamily | 產品代碼 | 序列 | 屬性 |
---|---|---|---|
AppPatch | {18A9233C-0B34-4127-A966-C257386270BC} | 1.2.0 |
ServicePack1 次要升級的 MsiPatchSequence 數據表。
PatchFamily | 產品代碼 | 序列 | 屬性 |
---|---|---|---|
AppPatch | {18A9233C-0B34-4127-A966-C257386270BC} | 1.3.0 |
如果使用者安裝產品 1.0 版,接著套用 QFE2,並且在稍後決定套用 QFE1,Windows Installer 會確保修補程式的正確應用順序,即 QFE1 會在 QFE2 之前套用到產品。 如果使用者套用 ServicePack1,則稍後會將 QFE2 和 QFE1 套用在一起,Windows Installer 可確保產品的有效修補程式應用程式順序在 QFE2 之前和 ServicePack1 之前是 QFE1。
如果在 ServicePack1 的 MsiPatchSequence 表中的 Attributes 列設定了 msidbPatchSequenceSupersedeEarlier,這表示 ServicePack1 包含 QFE1 和 QFE2 中的所有變更。 在此情況下,套用 ServicePack1 時不會套用 QFE1 和 QFE2。
Windows Installer 2.0:不支援。 比 Windows Installer 3.0 更早的版本只能為每個交易安裝一個修補程式,而且修補程式會依提供的順序套用修補程式。 在上述範例中,如果先套用 QFE2,再套用 QFE1,這代表兩次交易,并且修補程序會依順序 QFE2 和 QFE1 套用至應用程式的 1.0 版。 如果先套用 ServicePack1,則 QFE1 或 QFE2 無法在稍後的交易中套用,因為 ServicePack1 是變更應用程式版本的次要升級。 QFE1 和 QFE2 只能套用至應用程式的 1.0 版。