cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Mrs_Whistler
Level 2

Upgrade code issue after converting from Installshield X

We recently moved to Installshield 2008 from Installshield X and are converting our projects as we go along. I've been noticing that in the converted projects, the Upgrade Code is not being recognized in 2008 as the same Upgrade Code one the project has been converted. For example, I have a project that I recently converted from X to 2008. The Upgrade Code in the project is {22D123F4-EF5A-4C6B-842E-E765B67C665E}. This is the same Upgrade Code as all the previous projects, as they have all been Major Upgrades. The Product and Package Codes are updated. When I set up my Major Upgrade, I selected Products Sharing my Upgrade Code and then Popped the Upgrade code in the Advanced tab under Upgrade Code. I saved the project, built it and then closed it. When I went back in later to update something else, the Major Upgrade had changed to Products having another Upgrade Code, with my Upgrade Code filled in! I have changed it at least 3 times now and 2008 doesn't seem able to recognize that the Upgrade Code is the same as the previos project in Installshield X. Some of my colleagues noticed it as well when the entries in Add/Remove Programs started accumulating during testing. Has anyone else seen this behaviour??:confused:
Labels (1)
0 Kudos
(3) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

The way we represent this has changed slightly as of IS2008 in order to make the following two cases work. Note that as long as you aren't overriding your upgrade code, either selection should have the same end result.

When the upgrades view says "products sharing my upgrade code", no matter what upgrade code you build with, it will be that code. Note that you can override the upgrade code on a product configuration, and this option will follow that change.

When the upgrade view shows an upgrade code, no matter what you do to your project, this upgrade code will remain consistent. This allows you to specify a solid upgrade code which matches the previous version of your product, yet override your current one to a new upgrade code on the product configuration.

How this works behind the scenes is by storing an all-zeros upgrade code for the first case and making that match your build's upgrade code, or a non-zero upgrade code and never changing it. So when you change it from all zeros to your actual code, you are changing it to stick to this specific code instead of following your current. Does that help explain what you're seeing, and make it comfortable?
0 Kudos
Mrs_Whistler
Level 2

Hi Michael,

Thanks for your explanation. I may be a bit slow, but I'm not sure that I really understand the function of all the zeros in the upgrade code. When I use the option 'products sharing my upgrade code', I notice that there are multipe instances of the product in Add/Remove and they don't overwrite. I guess that is the part that I'm just not getting. Are you able to tell me why that works in that way? It's quite different from IS X and I'm just trying to wrap my head around it.

Thanks for your help so far. 🙂
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

The zeros is a flag to our build - your built MSI should never contain this in the upgrade table unless you really have an all-zeros upgrade code, but that isn't really a valid GUID. If you open the MSI that you've built, and go to the upgrade table, you should see the correct upgrade code.

It's actually not that different from what was in IS X - there are only two differences: we replace an all-zeros GUID with the current one, and we show only an all-zeros GUID as "sharing this upgrade code". Other than that, what gets built should be the same, and thus the runtime behavior should be the same.

I suspect that the multiple instances in Add/Remove might be due to an incorrect UpgradeCode somewhere, whether in the previous product, set as your current's normal upgrade code, or overridden in your product configuration. It should be easiest to check this either by opening the MSIs in question and looking at their UpgradeCode property and Upgrade table entries, or by taking a verbose log and looking for the FindRelatedProducts action.
0 Kudos