Digging In: MSI Transforms
When one starts working with transforms, whether for patching or for administration, digging in a bit further may be useful to solve the problems at hand. If this is you, here's some frequently asked questions
Q: What tools are available to build transforms?
A: Any one of the following tools provided in the Windows Installer SDK can be used to build the transform:
- Orca
- msitran.exe
- wigenxfm.vbs
Q: How do I view a transform in plain text?
A: Use wilstxfm.vbs from the MSI SDK
Eg.
C:\scratch> WiLstXfm.vbs simple.msi transform.mst
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.Property Value [transform] {}->{1}
Property INSERT [transform]
* Data represented by wilstxfm.vbs is that of the _TransformView table. It’s the set of operations the transform supports. To see its true effect, you have to view the transform in conjunction with the target (base) package.
Q: What are the internals for the transform file? How does the Installer translate that information?
A: Like the .MSI package, a transform is an OLE structured storage file. The transform also contains its own string pool (like the .MSI). Each stream in the OLE structured storage file in a transform represents a table in the package. If a stream for that table is present, it consists of the set of difference operations to transform that table from the base package to the reference package. For updates to rows, the update is keyed off of the primary key of the row.
Q: What determines the applicability of the transform?
A: The validation conditions for the transform. Yes, the summary information stream of the transform includes information about the target and reference packages; however, that information is only used when the validation conditions of the transform indicate that it should. The transform’s summary information stream is created by MsiCreateTransformSummaryInfo.
Q: If I provide an MST to administrators to apply in certain scenarios (e.g. ActiveDirectory deployments), can I build a patch for my product that updates the contents of that MST post-install without influencing cases that lack that MST? Pre-install they could pickup a new transform, but it isn't clear whether anything can be done post-install.
A: There is no post-install transform support. You can only apply transforms during initial install.
Note: Most content from Carolyn, MSI Team Dev Lead. You can get other Carolyn insights about developing for Windows Installer from the Windows Installer Chat Archives