Major Upgrade vs. Minor Upgrade vs. Small Update

InstallShield 2013

Project: This information applies to the following project types:

Basic MSI
InstallScript MSI

Windows Installer supports three types of product upgrades: major upgrades, minor upgrades, and small updates. The following table serves as a guide to help you determine which type of upgrade best suits your needs. If any one of the requirements for your upgrade is not appropriate for a minor upgrade or a small update, you should create a major upgrade. If you are not sure which type of upgrade you should use for your Windows Installer–based project or if you do not have a preference, you can create an automatic upgrade.

Major Upgrade vs. Minor Upgrade vs. Small Update

Requirement for the Upgrade

Use a Major Upgrade?

Use a Minor Upgrade?

Use a Small Update?

Note

Change the name of the .msi package

Yes

No

No

The default file name is taken from the Product Name property, provided the .msi file is not compressed in a Setup.exe installation launcher.

Enable end users to install earlier versions and the latest version on the same machine

Yes

No

No

 

Add a new subfeature

Yes

In some cases

In some cases

If the new subfeature consists of new components only, you can use a small update, a minor upgrade, or a major upgrade. If the new subfeature consists of existing components, you must use a major upgrade.

Move or delete a feature in the product tree

Yes

No

No

 

Add a new component to a new feature

Yes

Yes

Yes

 

Add a new component to an existing feature

Yes

Yes, if the version of Windows Installer is 2.0 or later

Yes, if the version of Windows Installer is 2.0 or later

Windows Installer 1.x requires new components in an upgrade package to be placed in new features for minor upgrades and small updates; it also requires special command-line handling.

Move or delete a component in the product tree

Yes

No

No

 

Change the component code of an existing component

Yes

No

No

 

Change the key file of a component

Yes

No

No

 

Add, remove, or modify any of the following: files, registry keys, or shortcuts

Yes

Yes

Yes

If the file, registry key, or shortcut is in more than one component and the component is shared by two or more features, a major upgrade must be used.

Codes Associated with the Different Types of Upgrades

Several Windows Installer codes help identify a product:

Package Code—Part of the Summary Information Stream, the package code identifies a particular database. The package code is not a Windows Installer property. Any two .msi databases with identical package codes must have identical contents. Therefore, you should change the package code for each build.
ProductVersion—This is a Windows Installer property that contains the product version. Note that Windows Installer uses only the first three fields of the ProductVersion property for version comparisons. For example, for a product version of 1.2.3.4, the 4 is ignored. (Note that this is true for comparisons of ProductVersion values, and not for file versions.)
ProductCode—This is a Windows Installer property that contains the GUID of a product. Windows Installer treats two products with different ProductCode GUIDs as unrelated, even if the values for the ProductName property are the same.
UpgradeCode—This is a Windows Installer property that contains a GUID representing the product family. The UpgradeCode should be consistent across different versions and languages of a family of related products for patching purposes. You can set the UpgradeCode for an upgrade in the Upgrades view.

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. The following table identifies when each code should be changed for different types of upgrades.

Codes that Need to Be Changed for the Different Types of Upgrades

 

Package Code

Product Version

Product Code

Upgrade Code

Small Update

X

 

 

 

Minor Upgrade

X

X

 

 

Major Upgrade

X

X

X

 

See Also