# What is a Minor Upgrade?

A Minor Upgrade is an update to a product in which the changes made to the installation do not warrant a change in the Product Code. From this statement alone, it is difficult to determine what a Minor Upgrade will actually do for you. The information in this help topic is intended to give you a better understanding of Minor Upgrades.

## How do you get a Minor Upgrade to work?

If the latest version of your setup has the same Product Code as the previous version of your setup, you can apply a minor upgrade to update your application. By simply building a release that includes Setup.exe, your latest installation will be Minor Upgrade enabled. Setup.exe can detect when a previous version of your application exists on the target machine. When it detects this, it runs the rest of your setup in Minor Upgrade mode.

If you author a Minor Upgrade Item in the Upgrade view of the InstallShield user interface, the build engine performs a series of tests to ensure that your latest installation will be able to successfully upgrade the previous version of your installation. However, authoring a Minor Upgrade Item is not actually required for a Minor upgrade to function properly.

Any new features that you add to the latest version of your setup must be added as sub-features of existing features. These new features must have the 'Remote Installation' attribute set to 'Favor Parent' and the 'Required' feature attribute of the parent set to the child feature.

## What does a Minor Upgrade look like at Runtime?

At runtime, the end user will first see a message box announcing that an upgrade will occur. This message specifies the name of the previous product, alerting the user as to which existing application will be updated. At this point, the user can stop the setup process if desired. This prompt is followed by a Welcome dialog, and when the user clicks next on the Welcome dialog, the setup will install its new resources. While installing its resources, the setup will update the progress bar on the Setup Progress dialog so that users will be able to track the upgrade process.

A Minor Upgrade installs its new resources over the application that currently exists on the target machine. If you want to completely uninstall and then reinstall your application, you should consider a Major Upgrade.

The Upgrade view in the IDE will allow you to disable or hide the initial upgrade prompt.

This update process follows all file overwrite rules. Therefore, only files with newer versions will be updated. The upgrade also follows componentization rules. Therefore, a file will only be updated if the key file to the component containing that file is also updated.

## How do I run a Minor Upgrade without using setup.exe?

If you intend to distribute your setup without wrapping it in setup.exe, then there is a manual process your users will have follow to start the setup. For this reason you should consider using setup.exe, although you can achieve similar results without it.

The Installer properties REINSTALL and REINSTALLEMODE must be set from the command line to start a setup in upgrade mode. In all but the most advanced scenarios, the property REINSTALLMODE should be set to 'vomus' and the property REINSTALL should be set to 'ALL'. A typical command line can look like the following:

    msiexec.exe /i \MySetup.msi REINSTALLMODE=vomus REINSTALL=ALL

A critical point to note is that you do not want to set these properties on the command line unless a previous version of your setup already exists on the target machine. If you do, the setup will appear to run in Minor Upgrade mode, and your application files may not get installed. Be sure that your users will be able to discern when command line should be used and when it should not.

The REINSTALLMODE attribute 'v' is very important when performing a Minor Upgrade. This parameter tells the Installer to refresh its internal setup cache for your product with the new setup package. Without this parameter, your setup will have no knowledge of any of the changes you have made to the latest and greatest setup package.

## Are Small and Minor upgrades the same thing?

No, they are not. However, they are very similar, and it is often easier to lump them together in the same category. Technically, a Minor Upgrade has a change in Product Version while a Small Update does not. Differences in product version can be useful when trying to create patches that only target specific previous versions of your setup.

The Product Version for your setup can be modified in the Product Properties grid of the General Information view in the IDE.