Summary
This article describes methods of working around a situation where a previous version was released without certain concessions being made for a Major Upgrade.
Synopsis
This article describes methods of working around a situation where a previous version was released without certain concessions being made for a Major Upgrade.
Discussion
Common scenarios in which a previous version of a product might fail to account for a Major Upgrade are:
- A custom action conditioned to run during uninstallation.
- Certain files erroring during un-self registration
- Some components not being marked as 'Permanent' so as to maintain user customization.
There are a few of methods to work around this behavior, depending on what you are attempting to account for:
- Schedule custom actions before and after RemoveExistingProducts in the Execute Sequence. This allows you to back up and restore vital data that might be removed during uninstallation. This is perhaps one of the simplest and most recommended solutions for this.
- Perform a 'Manual Major Upgrade' by invoking the UninstallString of the previous version silently during the package's UI sequence or OnFirstUIBefore Event Handler (in the case of an InstallScript MSI project). This is also a recommended method, since you would be able to implement similar Before-And-After functionality for backing up and restoring data. For reference: Performing a Major Upgrade with Installscript .
- Using a small update patch to transform the cached image on the target machine. This is accomplished by:
- Making a copy of the base MSI package
- Modifying the package in Direct Edit mode according to the problem area
- Specifying the base package, and modified package as 'Previous' and 'Latest' versions in a Patch Configuration
- Launching the patch silently in the UI Sequence or from a Setup Prerequisite
- If launched from a custom action, conditioning the action off of the Action property specified in the Major Upgrade item (typically '
ISACTIONPROP1', or similar)
- Using Windows Installer API's to apply an *.mst file authored in InstallShield to effect the changes. The overall approach to this would have to be wrapped up in a custom C++ Executable or a Setup Prerequisite. --Determine the previous package's Product Code. This might be static, but you can as well iterate through the registry looking for an Upgrade Code, or even pull the Product Code from the Action property (again, '
ISACTIONPROP1' or similar).- Using the Product Code, use the MsiGetProductInfo function to find the cached MSI location with the
INSTALLPROPERTY_LOCALPACKAGEflag: MsiGetProductInfo Function - Use the MsiDatabaseApplyTransform function to apply the *.mst to the cached MSI package: MsiDatabaseApplyTransform Function
- Using the Product Code, use the MsiGetProductInfo function to find the cached MSI location with the
Related Articles
How to Configure a Major Upgrade 7Number of Views Provide Notification of a Major Upgrade 6Number of Views Troubleshooting Major Upgrades 7Number of Views Major Upgrade Leaves 2 Entries in Programs and Features 9Number of Views Create a Major Upgrade 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. | |
Revenera Assistant
Case id: 00001065
Activity: Status change: 2 hours ago