Upgrade Considerations

InstallShield 2020

Project:This information applies to the following project types:

Basic MSI
InstallScript MSI
MSI Database

Note that MSI Database and Transform projects have support for major upgrades, but not for minor upgrades, small updates, patches, or QuickPack packages.

Following are some guidelines for creating upgrades.

Updating the Package Code, the Product Version, and the Product Code

For any type of upgrade, you must change various combinations of the package code, product version, and product code to identify the product being installed. For more information, see Major Upgrade vs. Minor Upgrade vs. Small Update.

Upgrade and Patch Optimization

When you are configuring a minor upgrade or a small update, use the patch optimization functionality in your build settings.

Using patch optimization helps you synchronize component names, component GUIDs, File table keys, and Directory table keys in the upgraded image with those in the target images. This helps to make the smallest possible patches. If you do not use patch optimization, the patch may be the same size as the target .msi package, or it may break Windows Installer component rules.

The patch-creation process uses the File table keys to determine if two files are the same file. (The actual file names cannot be used reliably, since a package might contain more than one file with the same name, installed under different conditions.) If you specify the previous package for patch optimization, InstallShield uses identical File table keys for identical files.

Tip:If your package uses dynamic file linking, it is recommended that you use patch optimization when building your upgrade. This keeps the key files consistent across the releases.

To use the patch optimization functionality, specify the previous Windows Installer package on the Advanced Settings panel in the Release Wizard. You can also specify the previous Windows Installer package through the Previous Package setting on the Build tab for the release in the Releases view.

Adding a Subfeature with a Minor Upgrade

In general, a minor upgrade should not include a new top-level feature. However, new subfeatures of existing features are allowed. If you are adding a new subfeature for a minor upgrade, set two of the subfeature’s settings as follows so that they are installed correctly during a minor upgrade:

Remote Installation—Select Favor Parent.
Required—Select Yes.

The user interface of a minor upgrade does not usually show the feature tree; however, maintenance mode for the updated installation typically does expose the feature tree. If you want the new subfeature to be excluded from the feature tree so that end users cannot deselect it, set the subfeature’s Display setting to Not Visible.

Removing Installed Data

If your minor upgrade removes data such as files, registry settings, or .ini files, simply removing the data that existed in the earlier product version from your project will not cause the file to be removed when the upgrade is applied. To learn how to remove such data, see Configuring Minor Upgrades to Remove Installed Data.

See Also