Windows Installer Upgrades

Windows Installer supports major application upgrades. A major upgrade is essentially the removal of an older product which is replaced by a newer product. In Advanced Installer the upgrades can be configured from the Upgrades View.

The upgrade solution has two different upgrade possibilities.

Uninstall old version first and then install new version

The upgrade process performs the following actions:

  • Detect and completely remove older products.
  • Install the new product.

This order is considered to be simpler because the upgrade process works out of the box. No extra product customization is necessary in order for the upgrade process to be successful. However it is inefficient because all reused files will be removed and then recopied. All changes made to the installed resources will be lost.

Install new version first and then uninstall old version

The upgrade process performs the following actions:

  • Start installation of the new product
  • Check for matching components between products. Install the new components from new product.
  • Uninstall the components that are not used by the new product.

This upgrade ordering is considered more efficient because the updated files are installed first and then the old files are removed. Resources that are shared by both packages will not be removed thus any change will be preserved.

This method however is more difficult to implement because the potential danger to remove newly installed application resources during uninstallation of older application. A carefully conditioning must be performed.

If the removal of the old application fails, then the installer rolls back both the removal of the old application and the installation of the new application.

Known problems that may occur when using this upgrade method and using the same directory as previous version:

  • An author removes resources from a component in the new package (the component is shared by both the new and old packages)

When the old product is uninstalled resources can be left behind.

In order remove the trailing resources, in the new package, a removal operation must be created. Another method would be to force the installation of the component in a different location (E.g. Change the install location of the new package.)

  • When using side by side packages.

Only files added to the new version will be installed.

To fix this a repair operation will be needed. Another method would be to force the installation of the component in a different location (E.g. Change the install location of the new package.)