Upgrading MSI packages in Windows Installer

Upgrade Packages

In windows Installer technology there is also support for upgrading applications (MSI).Upgrading an application means removal of old application from the target machine and installation of the new application. the upgrade is perform by enforcing several rules at Component level.

Upgrade Process

A simple windows installer upgrade package involves the following steps:

  1.     Identify the package installed on the target machine to be upgraded (remove)
  2.     Install new and updated components
  3.     Remove unneeded components

Package Attributes use to determine types of Upgrade

  •     Package Code
  •     Product Version
  •     Product Code

Upgrade Types

All updates require changing of the Package Code.

1.      Small Update

A small update is typically a small number of files; a small update cannot rearrange the feature component structure.

2.      Minor Update

A minor update can add files and features however cannot manipulate the current feature/component structure. A minor update also requires the Product Version property to be changed. Minor updates can be shipped as full product installers or MSP patch files.

3.      Major Update

A major update can add files / features and also manipulate the feature component tree. The major upgrade requires that new ProductCode, PackageCode, and ProductVersion’s are set.

The following table summarizes the changes required for each update type.

Update Type   Package Code       Product Version     Product Code

  Small              Change
  Minor             Change                    Change
  Major             Change                    Change                   Change

The different upgrade types are controlled by two Windows Installer Standard actions.These are:



The FindRelatedProducts uses upgrade codes and application versions to identify windows installer applications and then determines what should be done with the applications it finds. The action to be performed when a product is detected is determined by the value of the attribute column of the respective upgrade table row. In addition to this the FindRelatedProducts action adds the ProductCode of found application to the Property specified in the ActionProperty column of the upgrade table.

The RemoveExistingProducts action does the actual removal of products found by the FindRelatedProducts action. The list of features to be removed is determined from the Remove column of the upgrade table. A blank entry or a value of "ALL" determines the entire application feature set should be removed. The location of the FindRelatedProducts and RemoveExistingProducts actions in relation to each other viewed from the Installation sequences determines which of the above methods of upgrade are performed.


  • Trying to do a minor upgrade. Changed version and package code, ran install, but the result is that the old version is removed without the new version being installed. - rimetree 10 years ago
This post is locked

Don't be a Stranger!

Sign up today to participate, stay informed, earn points and establish a reputation for yourself!

Sign up! or login

Related Posts


This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ