Windows Installer Editor Reference
12
Creating a Patch File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Specifying Previous Versions for Patches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Advanced Upgrade Version Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Adding a Digital Signature to a Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Specifying the Patch Sequence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Specifying Advanced Patch Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Specifying Patch Removal Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Upgrades. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Creating an Upgrade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Chapter 12: Working With Source Paths. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
About source paths. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Using Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Adding an Installation to Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Adding Files to an Installation in Source Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Checking Files Into Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Checking Files Out from Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
Getting Latest Version of Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Removing Files from Source Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Undoing the Check Out of Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Showing History of the Installation File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Showing the Differences Between Installation Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Comparing the Current Installation to the Latest in Source Control. . . . . . . . . . . . . . . . . . . . 355
About Path Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Turning Path Variable Substitution On and Off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Creating a User-Defined Path Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
Creating a Path Variable Based on an Environment Variable . . . . . . . . . . . . . . . . . . . . . . . . 357
Creating a Path Variable Based on a Registry Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Source Paths in an Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Changing Source Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
Converting to Relative Source File Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Converting to UNC-Based Source File Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Changing the Source Directory Dynamically During Compile . . . . . . . . . . . . . . . . . . . . . . . . 362
Chapter 13: Merge Modules and Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
About Merge Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Available Tabs and Pages in Merge Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
Setting Merge Module Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Setting Dependencies for a Merge Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
Setting Exclusions for a Merge Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Creating a Merge Module As a New Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Creating a Merge Module Within a Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Creating a Merge Module From Existing Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
Creating a Configurable Merge Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Setting Configuration Item Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
Specifying Drop-Down List Values for Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Specifying a Bitfield for Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Specifying a Key for Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Example: Configuring an Item for a Merge Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
About the Merge Modules Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Adding a Merge Module to an Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Editing Merge Module Details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
About Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Creating a Transform Based on an Existing .MSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385