Summary
This article discusses rules one must follow to successfully author a patch.Synopsis
This article discusses rules one must follow to successfully author a patch. Failure to follow these rules can cause unpredictable and erroneous behavior during installation of the patch.
Discussion
Patch and Upgrade Rules
- To produce a patch between two MSI packages, their Package GUID must differ.
- The update can enlarge or reduce the Feature-Component tree, but it must not reorganize the existing hierarchy of Features and Components described by the Feature and FeatureComponents tables. It can add a new Feature to the existing Feature-Component tree. If it removes a parent Feature, it must also remove all the child Features of the removed feature. Note: Adding a New child Feature, consisting entirely of new Components, to an existing Feature does not require changing the product code.
- With Windows Installer versions earlier than version 2.0, the update can add a new Component only if that Component is associated with a new Feature. Beginning with Windows Installer version 2.0, a new Component can be added to an existing Feature.
- The update can add, remove, or modify the files, registry keys, or shortcuts of Components that are not shared by one or more Features. If the update modifies a versioned file, that file's version must be incremented in the File table. If the update removes resources, it should also update the RemoveFile and RemoveRegistry tables to remove any unused files, registry keys, or shortcuts that have already been installed.
- The update must not change the Component code of any Component. Consequently, a small update or Minor Upgrade must never change the name of a Component's key file because this would require changing the Component code.
- The update must not change the name of the .msi file of the installation package. Instead, it should change the package code since it modifies the package. Note that this means the update can change the tables, custom actions, and dialogs in the .msi file without changing the file's name.
- The update of a Component that is shared by two or more Features must be backward compatible with all applications and Features that use the Component. The update can modify the resource of a shared Component, such as files, registry entries, and shortcuts, as long as the changes are backward compatible. It is not recommended that the update add or remove files, registry entries, or shortcuts from a shared Component.
You cannot author a patch if:
- The name of the .msi file has been changed.
- The Component Code of an existing component has changed.
- A component is removed from an existing feature.
- An existing feature has been made into a child of an existing feature.
- An existing child feature has been removed from its parent feature.
- When using a version of Windows Installer earlier than version 2.0, the product code must be changed if a component has been added to an existing feature. With Windows Installer version 2.0, and later versions, a component may be added to an existing feature without requiring a product code change.
- It's a requirement that it be possible to have coexisting installations of the original and updated products on the same system.
Additional Information
Note for users of Windows Vista: The article discussing the administrative policy AllowLockdownMedia states that, "the default value of this policy is 1 only on computers running Windows Vista and that are not joined to a domain." However, it has been reported that this may not be accurate in all cases resulting in an un-set property. The net effect is that (1) installing a package from removable media like a CDROM, maintenance mode cannot be run and (2) the package cannot be uninstalled. Flexera Software has reported this issue to Microsoft and they are considering possible resolutions. Setting this policy should resolve the behavior.
For more information on patches and upgrades, refer to the Windows Installer Help Library topic Patching and Upgrades.
Related articles are:
Related Documents
Reference: Patch Design ViewRelated KB Articles
For InstallShield Express: Windows Installer Error 1706For InstallShield Professional & Premier: Windows Installer Error 1706
Related Articles
ISDEV : warning -6487: If You Intend to Distribute this Upgrade as a Patch, You Should Author the 'Patch Optimization' Set… 4Number of Views Authoring a Silent Installation 37Number of Views Oracle Inventory Patch for "No Oracle instance was successfully inventoried on host xxx" reported even partial services su… 5Number of Views Generating InstallAnywhere Build Log for Windows and Linux 14Number of Views Generating InstallAnywhere Log for Install and Uninstall with InstallAnywhere 2010 and Earlier 6Number of Views
Hi, I am Reva - Ask me anything.
No new updates
Thanks for the feedback!
Your feedback has been saved.Rate this response:
Add Additional feedback ( Optional )
Are you sure you want to cancel
the case creation?
Are you sure you want to cancel the case creation?
Are you sure you want to close this case
| Products | Region | Phone Numbers |
|---|---|---|
| FlexNet Operations FlexNet Embedded FlexNet Publisher FlexNet Connect FlexNet Code Insight InstallAnywhere InstallShield |
North America * |
+1 630-332-2513 (toll) +1 877-279-2853 (toll-free in North America) |
| Europe * |
+44 1925 944367 (toll) +44 800 047 8642 (toll-free in Europe) |
|
| Japan * | +81 3-4540-5335 (select option 2) | |
| Australia * |
+61 3 9895 2177 +61 1800 560 603 (toll-free in Australia) |
|
|
Usage Intelligence (formerly
Revulytics) Compliance Intelligence |
Please use the Case Portal to submit your support ticket or reach out to your Revenera contact. | |
Case id: 00001065
Activity: Status change: 2 hours ago