A transform is a collection of changes applied to an installation. By applying a transform to a base installation package, the installer can add or replace data in the installation database. The installer can only apply transforms during an installation.
The installer registers a list of transforms required by the product during the installation. The installer must apply these transforms to the product's installation package when configuring or installing the product. If a listed transform is unavailable, and if the transform source resiliency cannot restore it, the installation fails.
A transform can modify information that is in any persistent table in the installer database. A transform can also add or remove persistent tables in the installer database. Transforms cannot modify any part of an installation package that is not in a database table, such as information in the summary information stream, information in substorages, or files in embedded cabinets.
Transforms have a summary information stream that can contain validation conditions and error conditions. The transform validation and error conditions can be added to the summary information using the MsiCreateTransformSummaryInfo function. The validation conditions control whether the installer can apply the transform to a given installation database. Validation of the transform can be conditioned upon the values of the UpgradeCode, ProductCode, ProductVersion and ProductLanguage properties specified in the transform and those in the installation database. The transform error conditions control which errors get suppressed when the transform is applied. The error conditions included within the transform are overridden by the error conditions specified using the MsiDatabaseApplyTransform and ApplyTransform methods.
Typical customization transforms have no validation conditions or validate against the ProductCode. The transforms stored within patch packages generally have strict validation conditions to ensure that the correct transform is applied to the patch target.
There are three types of Windows Installer transforms: