ImageFamilies Table (Patchwiz.dll)
An image family is a group of one or more upgraded images of a product that have been updated to the most recent version. Each upgraded image can belong to only one family. Upgraded images belonging to an image family share one or more files. Each image family has its own cabinet file in the .msp file containing the binary patches and new files needed to update the differences between target and upgraded files. The cabinet file does not replicate the binary patches and new files used by the shared files.
An ImageFamilies table containing at least one record is required in every patch creation database (.pcp file). This table is used by the UiCreatePatchPackageEx function.
The ImageFamilies table contains the patching information that is to be added to the Media table. A patch adds one entry to the Media table. Each record in the ImageFamilies tables refers to a group of related product images that have been updated to the most recent version of the product.
The ImageFamilies table has the following columns. A null value can be used in the MediaSrcPropName, MediaDiskId, and FileSequenceStart columns if the patch is applied with Windows Installer and Patchwiz.dll version 2.0.
The value entered in this field is an identifier for a group of related product images that have been updated to the most recent version of the product. Limited to a total of 8 alphanumeric characters or underscores. The installer embeds a cabinet stream in the Windows Installer patch file (.msp file) for each family in the table. The cabinet contains the binary patches and new files required to update a target image into an upgraded image of the product. The installer prefixes the family name with PCW_CAB_ to generate the cabinet's stream name it enters into the Cabinet field of the new Media table entry.
The value entered into the Source field of the new Media table entry of the upgraded image. This field can be null only if you are using version 2.0 of Patchwiz.dll and if the MinimumRequiredMsiVersion in the Properties table (Patchwiz.dll) is set to 200.
The installer enters this value into the DiskId field of the new Media table record. The DiskID value must be greater than any current DiskID in the target package. The limit for MediaDiskId is 32767. This field can be null only if you are using version 2.0 of Patchwiz.dll and if the MinimumRequiredMsiVersion in the Properties table (Patchwiz.dll) is set to 200.
This field is the sequence number for the starting file. This same file sequence number must not exist in two patches for the same product. To ensure this, the value in this field must be greater than all sequence numbers used in previous patches or in the original installation package. The greatest sequence number in a patch can be determined by adding the total number of entries in the patch cabinet file to the FileSequenceStart number for that patch. One way to determine this is to look at the .ddf file generated by Patchwiz.dll during the creation of the patch. The limit for FileSequenceStart is 32767. This field can be null only if you are using version 2.0 of Patchwiz.dll and if the MinimumRequiredMsiVersion in the Properties table (Patchwiz.dll) is set to 200.
The installer enters this value into the DiskPrompt field of the new Media table record.
The installer enters this value into the VolumeLabel field of the new Media record.
The patch adds the name of the cabinet in the .msp file to the Cabinet field of the new record added to the Media table. Because it is an embedded cabinet, the name is prefixed with a '#' character. The patch adds a property to the Source field of the new record in the Media table. No two patches may have the same source property.
The files that are shared within the image family must have the same file table key in each upgraded image of the family. Any file table keys shared among the upgraded images must represent the same file and must be identical in all the upgraded images. The file table key is the value entered in the File column of the File table.
The limit for MediaDiskId and FileSequenceStart is 32767. To increase this limit export the ImageFamilies table to an .idt file with Msidb.exe and change the column type from i2 to i4, or from I2 to I4, and then import the .idt file back into the .pcp database. Transforms and patches cannot be created between two packages having different column types.