パッチ サイズの削減

Windows インストーラー バージョン 3.0 以降では、パッチ作成者はインストーラーによってキャッシュされた製品ベースラインを使用して、小さな差分パッチでアプリケーションに簡単にサービスを提供できます。 多くの場合、サービス情報をアプリケーションに提供する "差分パッチ" は、同じ情報を提供する完全ファイル パッチまたはインストール パッケージよりも著しく小さくなります。

Windows インストーラー 2.0: サポートされていません。 Windows インストーラー 3.0 以降のインストーラーでは、更新時にファイルに関するベースライン情報が選択的に保存されます。

Windows インストーラーには、アプリケーションを更新してサービスを提供するための 3 つの方法 (小規模な更新マイナー アップグレードメジャー アップグレード) が用意されています。 小規模な更新プログラムはクイック修正エンジニアリング (QFE) 更新とも呼ばれ、マイナー アップグレードは Service Pack (SP) 更新とも呼ばれます。 一般的なメジャー アップグレードでは以前のアプリケーションが削除され、新しいアプリケーションがインストールされます。 Windows インストーラーでは、インストール パッケージ (.msi ファイル) または修正プログラム パッケージ (.msp ファイル) としてサービス情報をアプリケーションに配信できます。

小規模な更新プログラムまたはマイナー アップグレードのサービス情報を提供する Windows インストーラー修正プログラム パッケージは、同じサービス情報を提供する同等のインストール パッケージよりも通常はるかに小さくなります。 小規模およびマイナー アップグレードの配布には、修正プログラム パッケージを使用することをお勧めします。 メジャー アップグレードの配布には、インストール パッケージを使用することをお勧めします。

Windows インストーラー修正プログラム (.msp ファイル) は、完全なファイルまたは差分ファイル (デルタ ファイルとも呼ばれます) から生成できます。デルタ ファイルから生成された Windows インストーラー修正プログラムは、同等の完全なファイルの修正プログラムよりもはるかに小さくなる可能性があります。 すべてのバージョンの Windows インストーラーでは、完全なファイルの修正プログラムと差分パッチの両方を使用できます。

Windows インストーラー バージョン 3.0 以降のインストーラーでは、更新時にファイルに関するベースライン情報が選択的に保存されます。 元の基本アプリケーション (RTM バージョン) と最新のマイナー アップグレード (Service Pack) に関する情報は、アプリケーションがインストールされたかマイナー アップグレードを受け取ったときに、プライベートな場所に保存されます。

ベースライン キャッシュのサイズを最小限に抑えるために、インストーラーでは次の処理が実行されます。

  • アプリケーションごとに保持されるベースラインは 2 つ以下です。最初にリリースされたファイルのベースライン (RTM) と、最新のマイナー アップグレード時のファイルのベースライン (Service Pack) です。
  • ファイルは、パッチが適用されるまでキャッシュに追加されません。 ベースライン キャッシュはコピーオンライトです。
  • アプリケーションが一度も更新されていない場合、ベースライン キャッシュにファイルはありません。
  • アプリケーションの最後のサービス提供がマイナー アップグレード (Service Pack) の場合、アプリケーションはベースライン レベルであり、最大 2 つのファイルのコピーがコンピューターに存在している可能性があります。 ファイルの 1 つのコピーはインストールのターゲット ディレクトリにあります。 もう 1 つのコピーは RTM ベースライン キャッシュにある可能性があります。
  • アプリケーションの最後のサービス提供が小規模な更新プログラム (QFE) の場合、アプリケーションはベースライン レベルではなく、最大 3 つのファイルのコピーがコンピューターに存在している可能性があります。 ファイルの最初のコピーはインストールのターゲット ディレクトリにあります。 ファイルの 2 番目のコピーは RTM ベースライン キャッシュにあります。 ファイルの最後のコピーは最新のベースライン キャッシュにあります。
  • 製品がアンインストールされると、アプリケーションのベースライン キャッシュが削除されます。

Windows インストーラー バージョン 3.0 以降では、パッチがアプリケーションに適用されるとき、インストーラーではベースライン キャッシュを使用できます。 ベースライン情報は、差分パッチを適用したり、パッチのアンインストール中にファイルを以前のバージョンに戻したりするために使用できます。 これによりパッチ作成者は、小さなデルタ パッチの恩恵を受けることができます。 デルタ パッチをターゲット ファイルに適用できないことがインストーラーで検出された場合、インストーラーではベースライン キャッシュに保存されているファイルを開始点として使用できます。 インストーラーでは、キャッシュ内のすべての可能性を試した後で、元のインストール ソースを要求するという手段に訴えます。

次のガイドラインに準拠すると、パッチ作成者は Windows インストーラー バージョン 3.0 のパッチとベースライン キャッシュを使用して、より小さなデルタ パッチをうまく作成できます。

  • MsiPatchSequence テーブルを含むパッチを作成する。 このテーブルはベースライン キャッシュを使用するために必要であり、Windows インストーラー バージョン 3.0 以降で使用できます。
  • ベースライン キャッシュを禁止するポリシーを設定しない。 MaxPatchCacheSize ポリシーの値は、使用できるディスク領域の最大割合を指定します。 MaxPatchCacheSize ポリシーが 0 に設定されている場合、追加のファイルがベースライン キャッシュに保存されません。 このポリシーが設定されていない場合、既定では、ディスク領域の最大 10% を使用できます。 キャッシュの合計サイズがディスク領域の最大の割合に達した場合、追加のファイルは保存されません。 このポリシーは、既に保存されているファイルには影響しません。 キャッシュが無効になっている場合でも、インストーラーでは既存の製品ベースライン キャッシュを使用できます。
  • 適用された最初のパッチに MsiPatchSequence テーブルが含まれている場合、アプリケーションのキャッシュが有効になります。
  • サービス提供トランザクションのパッチに MsiPatchSequence テーブルが含まれていない場合、MsiPatchSequence テーブルを含むマイナー アップグレード パッチ (Service Pack) が製品に正常に適用された場合にのみアプリケーションのキャッシュが有効になります。
  • Msimsp.exePATCHWIZ.DLL などのパッチ作成ツールを使用して修正プログラム パッケージを生成する。
  • アプリケーションの RTM バージョンまたはアプリケーションのマイナー アップグレード (Service Pack) バージョンの修正プログラムに常に目標を定める。 パッチ作成プロパティ (PCP) ファイルの TargetImages テーブルで指定されるターゲットは、ProductVersion プロパティの最初の 3 つのフィールドで定義された製品チェック ポイントである必要があります。
  • 小規模な更新プログラムのイメージの修正プログラムに目標を定めない。 パッチを作成するためのターゲットには、以前の小規模な更新プログラムのアップグレード イメージを含めないようにする必要があります。