パッチの削除

Windows インストーラー バージョン 3.0 以降では、アプリケーション全体およびその他のパッチをアンインストールして再インストールせずに、個別に任意の順序でアンインストールできるパッチを作成してインストールできます。 Windows インストーラー 3.0 では、パッチ シーケンス情報を含む MsiPatchSequence テーブルを使用してパッチ パッケージを作成することもできます。 Windows インストーラー 3.0 より前のバージョンの Windows インストーラーにおいて、アプリケーションから特定のパッチを削除する唯一の方法は、パッチが適用されたアプリケーション全体をアンインストールしてから、削除するパッチを再適用せずに再インストールすることです。

パッチをアンインストールできるかどうかは、パッチの作成方法、パッチのインストールに使用された Windows インストーラーのバージョン、およびパッチによって加えられたアプリケーションに対する変更によって異なります。 パッチをアンインストールできない場合、パッチを削除する唯一の方法は、アプリケーション全体をアンインストールし、削除するパッチを適用せずに再インストールすることです。

コマンド ライン オプション、またはスクリプト インターフェイスを使用するか、別のアプリケーションから MsiRemovePatches を呼び出すことで、1 つ以上のパッチをアンインストールできます。 パッチをアンインストールする方法の詳細については、「パッチのアンインストール」を参照してください。

MSIPATCHREMOVE プロパティの値には、アンインストールするパッチがリストされます。 リスト内の各パッチについて、インストーラーはそのパッチがアンインストール可能であることを検証します。 ユーザーにパッチを削除する権限がない場合、パッチが製品に対して不明な場合、パッチ ポリシーによって削除が禁止されている場合、またはパッチがアンインストール不可としてマークされている場合、インストーラーはインストール トランザクションの失敗を示すエラーを返します。 パッチがアンインストール不可かどうかを判断する方法の詳細については、「アンインストール可能なパッチ」を参照してください。

パッチが削除可能として検証されると、インストーラーはパッチ アプリケーション シーケンスからパッチを削除します。 Windows インストーラー 3.0 がパッチの適用時に使用するシーケンスを決定する方法の詳細については、「パッチのシーケンス処理」を参照してください。 シーケンスからパッチを削除すると、不使用、または置き換え済みとマークされたパッチがアクティブになる可能性があることに注意してください。

削除対象として選択されたすべてのパッチは、MsiPatchRemovalList プロパティにリストされます。 このプロパティは、インストーラーによって設定されるプライベート プロパティであり、条件式で使用することも、カスタム アクションでクエリを実行することもできます。 プロパティには、削除するパッチのパッチ コード GUID のリストが含まれています。 カスタム アクションでは、Patch オブジェクトMsiGetPatchInfoEx プロパティまたは PatchProperty プロパティを呼び出すことによって、パッチのインストール状態が適用済みか、不使用か、置き換え済みかを判断できます。

パッチが削除された後のアプリケーションの状態は、パッチがインストールされなかった場合と同じになります。 可能であれば、インストーラーは、削除されるパッチの影響を受ける機能のサブセットに対するプロセスを制限します。 インストーラーは、影響を受ける機能のリストに REINSTALL プロパティを自動的に設定します。 パッチによって追加されたファイルは削除され、パッチによって変更されたファイルは上書きされます。 ファイルとレジストリ エントリは、製品からパッチを除いたバージョンに復元されます。 パッチによって追加された機能とコンポーネントは、アプリケーションから登録解除されます。 パッチによって追加された追加コンテンツは、まだ適用可能な別のパッチによってコンテンツが使用されている場合、ユーザーのコンピューターに残る可能性があることに注意してください。

共有コンポーネントのファイルがパッチによって更新された場合、その変更はコンポーネントを共有するすべてのアプリケーションに影響します。 パッチが削除されると、その変更はコンポーネントを共有するすべてのアプリケーションに影響します。 これは、あるアプリケーションがパッチを削除すると、共有コンポーネントのファイルが、別のアプリケーションが必要とするものより低いバージョンに復元される可能性があることを意味します。 これにより、最初のアプリケーションが修正されても、第 2 のアプリケーションが動作しなくなる可能性があります。 この場合、「機能またはアプリケーションの再インストール」で説明されている方法を使用して、第 2 のアプリケーションを再インストールすることで、第 2 のアプリケーションを修復できます。 これにより、パッチが適用されたバージョンのファイルが復元されます。

MsiEnumapplicationsEx

MsiGetPatchInfoEx

MSIPATCHREMOVE

MsiRemovePatches

パッチのシーケンス処理

パッチをアンインストールするカスタム アクション

アンインストール可能なパッチ

パッチのアンインストール