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 つのパッケージ間では変換とパッチを作成できません。