複数パッチの適用例
次の例は、Windows インストーラー 3.0 以降を使って、作成された順序でパッチを適用する方法を示しています。
例
この例では、QFE1、QFE2、ServicePack1 の 3 つのパッチがあり、それぞれ MsiPatchSequence テーブルがあります。 これらのパッチは、アプリケーションのバージョン 1.0 に適用されるように作成されています。
更新プログラム名 | パッチの種類 | シーケンス番号 |
---|---|---|
QFE1 | 小さな更新プログラム | 1.1.0 |
QFE2 | 小さな更新プログラム | 1.2.0 |
ServicePack1 | マイナー アップグレード | 1.3.0 |
各パッチの MsiPatchSequence テーブルには、パッチ ファミリ、製品コード、シーケンス番号を含む 1 つのレコードのみがあります。 3 つのパッチはすべて同じ製品に適用され、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 インストーラーは、製品にパッチを適用する効果的な順序は、QFE2 の前に QFE1 を適用することであると保証します。 ユーザーが ServicePack1 を適用し、後日 QFE2 と QFE1 を一緒に適用する場合、Windows インストーラーは、製品にパッチを適用する効果的な順序は、QFE2 の前に QFE1 であり、ServicePack1 の前であることを保証します。
ServicePack1 の MsiPatchSequence テーブルの Attributes 列に msidbPatchSequenceSupersedeEarlier が設定されている場合、そのサービス パックに QFE1 と QFE2 のすべての変更が含まれていることを意味します。 この場合、ServicePack1 が適用されていると、QFE1 と QFE2 は適用されません。
Windows インストーラー 2.0: サポートされていません。 Windows インストーラー 3.0 より前のバージョンでは、1 トランザクションに 1 つのパッチのみをインストールできます。また、指定された順序で適用されます。 先ほどの例では、QFE2 が最初に適用され、次に QFE1 が適用された場合、それは 2 つのトランザクションであり、パッチは QFE2 の後に QFE1 という順序でアプリケーションのバージョン 1.0 に適用されます。 ServicePack1 が先に適用された場合、ServicePack1 はアプリケーションのバージョンを変更するマイナー アップグレードであるため、QFE1 または QFE2 を後のトランザクションで適用することはできません。 QFE1 と QFE2 は、アプリケーションのバージョン 1.0 にのみ適用できます。