次の方法で共有


ImageFamilies テーブル (Patchwiz.dll)

イメージ ファミリは、最新バージョンに更新された製品のアップグレードされた 1 つ以上のイメージのグループです。 アップグレードされた各イメージは、1 つのファミリのみに属することができます。 1 つのイメージ ファミリに属するアップグレードされたイメージは、1 つ以上のファイルを共有します。 .msp ファイル内にはイメージ ファミリごとに独自のキャビネット ファイルがあり、ターゲット ファイルとアップグレードされたファイルの違いを更新するために必要なバイナリ パッチと新しいファイルが含まれています。 共有ファイルで使用されるバイナリ パッチと新しいファイルはキャビネット ファイルで複製されません。

パッチ作成データベース (.pcp ファイル) ごとに、少なくとも 1 つのレコードを含む ImageFamilies テーブルが必要です。 このテーブルは、UiCreatePatchPackageEx 関数によって使用されます。

ImageFamilies テーブルには、Media テーブルに追加するパッチ情報が含まれています。 パッチによって Media テーブルに 1 つのエントリが追加されます。 ImageFamilies テーブルの各レコードは、製品の最新バージョンに更新された関連製品イメージのグループを参照します。

ImageFamilies テーブルには次の列があります。 Windows インストーラーと Patchwiz.dll バージョン 2.0 でパッチが適用される場合は、MediaSrcPropName、MediaDiskId、FileSequenceStart の列に null 値を使用できます。

Column 種類 キー Nullable
ファミリ text Y N
MediaSrcPropName text Y
MediaDiskId 整数 (integer) Y
FileSequenceStart 整数 (integer) Y
DiskPrompt text Y
VolumeLabel text Y

 

[列]

Family

このフィールドに入力される値は、製品の最新バージョンに更新された関連製品イメージのグループの識別子です。 合計 8 文字の英数字またはアンダースコアに制限されます。 インストーラーは、テーブル内の各ファミリの Windows インストーラー パッチ ファイル (.msp ファイル) にキャビネット ストリームを埋め込みます。 キャビネットには、ターゲット イメージを製品のアップグレードされたイメージに更新するために必要なバイナリ パッチと新しいファイルが含まれています。 インストーラーは、ファミリ名の前に PCW_CAB_ を付けて、新しい Media テーブル エントリの Cabinet フィールドに入力するキャビネットのストリーム名を生成します。

MediaSrcPropName

アップグレードされたイメージの新しい Media テーブル エントリの Source フィールドに入力された値。 このフィールドは、バージョン 2.0 の Patchwiz.dll を使用していて、Properties テーブル (Patchwiz.dll) の MinimumRequiredMsiVersion が 200 に設定されている場合にのみ、null にすることができます。

MediaDiskId

インストーラーは、新しい Media テーブル レコードの DiskId フィールドにこの値を入力します。 DiskID 値は、ターゲット パッケージ内の現在の DiskID より大きい必要があります。 MediaDiskId の上限は 32767 です。 このフィールドは、バージョン 2.0 の Patchwiz.dll を使用していて、Properties テーブル (Patchwiz.dll) の MinimumRequiredMsiVersion が 200 に設定されている場合にのみ、null にすることができます。

FileSequenceStart

このフィールドは、開始ファイルのシーケンス番号です。 この同じファイル シーケンス番号が、同じ製品の 2 つのパッチに存在してはなりません。 これを確実にするため、このフィールドの値は、以前のパッチまたは元のインストール パッケージで使用されたすべてのシーケンス番号よりも大きい必要があります。 パッチの最大シーケンス番号は、パッチ キャビネット ファイル内のエントリの合計数を、そのパッチの FileSequenceStart 番号に追加することで決定できます。 これを判断する方法の 1 つは、パッチ作成時に Patchwiz.dll によって生成された .ddf ファイルを調べることです。 FileSequenceStart の上限は 32767 です。 このフィールドは、バージョン 2.0 の Patchwiz.dll を使用していて、Properties テーブル (Patchwiz.dll) の MinimumRequiredMsiVersion が 200 に設定されている場合にのみ、null にすることができます。

DiskPrompt

インストーラーは、新しい Media テーブル レコードの DiskPrompt フィールドにこの値を入力します。

VolumeLabel

インストーラーは、新しい Media レコードの VolumeLabel フィールドにこの値を入力します。

解説

パッチは、.msp ファイル内のキャビネットの名前を、、Media テーブルに追加された新しいレコードの Cabinet フィールドに追加します。 埋め込みキャビネットであるため、名前の先頭には '#' 文字が付きます。 このパッチは、Media テーブルの新しいレコードの Source フィールドにプロパティを追加します。 2 つのパッチが同じ Source プロパティを持つことはできません。

イメージ ファミリ内で共有されるファイルは、ファミリのアップグレードされた各イメージで同じファイル テーブル キーを持っている必要があります。 アップグレードされたイメージ間で共有されるファイル テーブル キーは、同じファイルを表す必要があり、アップグレードされたすべてのイメージで同一である必要があります。 ファイル テーブル キーは、File テーブルの File 列に入力された値です。

MediaDiskId と FileSequenceStart の上限は 32767 です。 この上限を引き上げるには、ImageFamilies テーブルを、Msidb.exe を含む .idt ファイルにエクスポートし、列の種類を i2 から i4 に、または I2 から I4 に変更してから、.idt ファイルを .pcp データベースにインポートし直します。 列の種類が異なる 2 つのパッケージ間では変換とパッチを作成できません。