複数パッチの適用例

次の例は、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 にのみ適用できます。