I currently have the task of building the next version of our software installer.

I have all the project files from out previous version (v16) and im currently building v17.

We are using InstallShield 2015 Professional Edition (version 22 | service pack 2)

The Problem

I have the Basic MSI Project files here, I have changed the version number and made the changes required for the next version of our software - however, when i run the installer it says that i already have it installed (even though the version number is different)

Upon researching this issue, there is numerous posts about this, but i cannot find a difinitive answer as to which should be changed "Product Code" or "Upgrade Code" or both codes or neither codes or something else im missing.

Any help would be greatly appreciated.


It would depend on how you designed your software. Can you run multiple versions side by side? Should only one version be able to run?

Checkout the Microsoft articles on Productcode as well as Upgradecode.

The product code must be changed if any of the following are true for the update:

  • Coexisting installations of both original and updated products on the same system must be possible.
  • The name of the .msi file has been changed.
  • The component code of an existing component has changed.
  • A component is removed from an existing feature.
  • An existing feature has been made into a child of an existing feature.
  • An existing child feature has been removed from its parent feature.

For the upgrade codes the following examples are given.

The following two scenarios illustrate the use of the UpgradeCode.

  • Product A and Product B were shipped with the same ProductLanguage, ProductVersion, and UpgradeCode. Product A and Product B have different ProductCodes. Because the products were assigned the same UpgradeCode, the Upgrade table cannot be authored to differentiate the older version of Product A from the older version of Product B. In this case, you will be unable to have an upgrade installation of Product A that ignores Product B. Because these were different products, they should have each been assigned a different UpgradeCode.
  • The English and French versions of Product A were shipped with the same ProductVersion and UpgradeCode. Both the English and French versions of Product A have different ProductLanguages and ProductCodes. Even though both the English and French language versions share the same UpgradeCode, it is possible to author the Upgrade table such that only the older English language version will be detected and upgraded and the older French version ignored. Different language versions of a product can use the same UpgradeCode.
  • So upgrade code technically has nothing to do with an actual upgrade from different version .. i would have to change the product code? But then, changing the product code, can i automate the uninstallation of the previous version? Thanks for your help :) – Gaza Jan 30 at 13:06
  • As the articles mention it depends on what you're actually facing. I have no clue what software you're sitting in front of and whenever it's a small update, a small upgrade, a patch or a major upgrade. Let alone whenever you changed the "layout" of the installer or not. You probably can but you'd have to look into how to do that. After all you do know the product code and upgrade code of the previous version. – Seth Jan 30 at 13:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.