Special Considerations for Upgrade Support

InstallAnywhere 2018

If you are adding upgrade support to your project, note the following details.

Upgrade-Related Variables

The following upgrade-related standard variables are available:

$IA_UPGRADE_BASE_VERSION$
$IA_UPGRADE_BASE_LOCATION$

These variables specify version and location information about the earlier version of the product that is being updated during an upgrade.

To learn more, see Standard InstallAnywhere Variables.

Upgrades and the Uninstaller

If an end user runs an upgrade on a target system that has an earlier version of the product that needs to be updated, but its uninstaller is missing from the target system or damaged, the upgrade exits without uninstalling the earlier version or installing the new version.

Upgrades and Rollbacks

A rollback that occurs during an upgrade cannot restore a target system to the state that it was in before the upgrade was installed. That is, if rollback is enabled in an upgrade and the upgrade encounters the FatalInstallException type of exception while installing the new version of the product, the earlier version of the product that the upgrade removed cannot be restored.

Upgrades and File Locking

The upgrade process cannot detect whether the earlier version of the product that is being updated or its uninstaller is locked by another process. Therefore, you may want to add text to the Introduction panel to recommend that users exit any open instances of the product before launching the installer.

Upgrades and Shared Components

If you configure your upgrade to update a shared component of a product whose earlier version is present on a target system, note the following behavior about the upgrade process:

1. The upgrade initiates the uninstallation of the product:
As part of this process, the uninstaller removes the standard components.
If no other products on the target system reference the shared component, the uninstaller also removes that shared component.
If one or more other products on the target system reference the shared component, the uninstaller leaves the shared component on the target system.
2. The upgrade installs the new version of the product. As part of this process, the upgrade overwrites the shared components that were not removed. As a result of the upgrade of the shared component, unexpected results may occur in one or more of the products that reference the shared component.

Upgrades and Instance Management

It is possible to have an installer that includes both upgrade support and support for installing multiple instances of the product on the same system. If an end user has multiple earlier versions of the product installed when launching an upgrade installer for a newer version of the product, the installer performs an upgrade; it does not launch maintenance mode to maintain the existing versions.

Depending on how you configure the upgrade support in your project, you can either have the upgrade update all of the earlier instances that are installed on target systems, or enable end users to choose which instance to update.

Upgrades and Merge Modules

If your project includes one or more merge modules as well as upgrade support, the installer can directly handle upgrades of the merge modules—the uninstallation of the earlier versions of merge modules as well as the installation of the new version. To support this behavior, the parent project must be configured to uninstall the merge modules. That is, if you are using a dynamic merge module, the Uninstall Merge Module when parent is uninstalled check box must be selected. This setting is on the Install tab of the Dynamic Merge Module customizer in the parent project (Organization page > Modules view). You can also select this check box on the Install Merge Module action customizer in the Install sequence.

Note the following behavior about upgrades and merge modules:

If a parent project is configured to uninstall a merge module and if the resulting installer detects an earlier version of the product that needs to be updated, the upgrade installer removes the earlier version of the merge module and also installs the new version.
If the parent project is not configured to uninstall a merge module, the parent installer leaves the earlier version of the merge module as is on target systems during upgrades. In addition, it does not install the new version of the merge module.

Note that the aforementioned behavior occurs regardless of whether upgrade support is enabled in the merge module project. In addition, it occurs regardless of whether upgrade configurations are configured in the merge module project.

See Also