1.2.3 パッチとは?
パッチを使用して、Windows インストーラーを使ってインストールされたソフトウェア製品に一連の変更を配布します。ソフトウェア製品は新しいバージョン(MSIファイル)のインストール、もしくはパッチ(MSPファイル)の適用によりアップグレードできます。
パッチは主に修正されコンパイルされたオブジェクト、ショートカットおよび実行可能ファイルの適用に使われます。パッチを使用したデータベースの変更管理は複雑で、データベースの破損につながりやすいため、パッチを使ってデータベース変更を配布することは推奨されません。
パッチは、そのパッチ番号によって識別されます。パッチ番号はそのベースとなるバージョンもしくはパッチに直接関係があります。例えばパッチ1.0.0.1 はバージョン1.0.0の最初のパッチです。
パッチは、親バージョンもしくはパッチをコピーして作成します。このようにして、パッチは配布されるオブジェクトを含めて親の定義を継承します。パッチが作成されると、親バージョンもしくはパッチの作成と全く同じ方法で完全なMSIファイルが作成されます。最終的なMSIファイルはバージョンのMSIファイルと比較され、差分のMSPファイルが作成されます。MSPファイルのみインストール可能なことに注意してください。仮のMSIはMSPが構築されると削除されます。
MSPファイルは自己完結型のパッケージで、ソフトウェア製品のアップデートを含み、どのバージョンがこのパッチを受け取るかを記述します。MSPファイルは通常非常に小さいので、多くの場合、パッチを配布して製品のサービスをするようお勧めします。
パッチをアップデートされたオブジェクトの提供にのみ使用し、新しいオブジェクトがない場合、パッケージ定義内での変更は不要です。パッケージを保存し、作成してください。バージョンと現在のオブジェクトの状況との違いがパッケージに含められます。
通常、パッチは最後のパッチ定義から作成されるため、例えば新しいオブジェクトの追加のようなパッケージ定義への変更を含みます。
パッチの適用順によってインストールの結果が変わることはありません。パッチ1がMYFORM.DLL バージョン1.0.0.1を、パッチ2がMYFORM.DLL バージョン1.0.0.2を含む場合、パッチ1とパッチ2のどちらが先にインストールされても、結果としてMYFORM.DLL バージョン1.0.0.2がインストールされます。
パッチがアンインストールされる時も同様です。パッチ1をアンインストールする際、パッチがインストールしたDLLのバージョンのみに影響を与えます。バージョン1.0.0.2がインストールされているので、アンインストールするパッチ1はMYFORM.DLLをバージョン1.0.0で置き換えません。バージョンは1.0.0.2のままです。その後パッチ2をアンインストールした時のみ、バージョンは1.0.0.0に復元されます。
これは整然としているように思われるかもしれませんが、累加的でないパッチが作成されると管理は複雑になります。各パッチは、過去に発生した変更を全て含むか、もしくは必要であれば変更をバックアウトし、インストールをそのパッチのレベルに進ませるのに必要な唯一のパッチであると見なされなければなりません。したがって、ユーザーがどのパッチ・レベルのインストールを選択したかにかかわらず、最新のパッチのみインストールすれば最新のバージョンが取得できます。中間のパッチは不要です。注:生成された1つのマシンから順次パッチを作成し、オブジェクトを以前の状態に復元しないと、パッチは累加的になります。
以下も参照してください。
バージョニングの詳細については「1.2.2 バージョンとは?」を参照してください。