This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- Re: Two Programs, One Upgrade Code
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 15, 2008
02:38 PM
Two Programs, One Upgrade Code
Today, we migrated over to our new InstallShield 2009 installer. My company is new to InstallShield, so my understanding (as it is now my responsibility) of it is weak. Previously our program, which is in beta, has been distributed as a plain ol' MSI file. We decided that our next release would be instead be a Basic MSI project via IS9. After constructing it and testing it however, I've found a slight issue, which is more or less a fairly large problem.
Among other tests, I tried these 3 major conditions:
1) A fresh install using the IS9 installer
2) An upgrade install from the IS9 installer to an "upgrade" IS9 Installer
3) An upgrade install from our plain old MSI installer to the IS9 Installer
The first two went fine. The last one however resulted in the "upgrade" not being run. Instead, the normal IS9 setup was run. This resulted in two different installations of our program on the target machine. Between the MSI that was already installed, and the MSI contained in the IS9 installer, the differences were that the version had been updated, the product code changed, and the package code changed. The Upgrade code however is identical. During my work with plain MSI files, it was my understanding that two products installed with an MSI could not be installed at the same time if their Upgrade Code was the same.
So, what's going on here? Is my assumption wrong?
How do I get the IS9 installer to "Upgrade" or act as an update to the plain MSI file I've been distributing (and previously updating) to many clients already?
Thanks for the assistance
Among other tests, I tried these 3 major conditions:
1) A fresh install using the IS9 installer
2) An upgrade install from the IS9 installer to an "upgrade" IS9 Installer
3) An upgrade install from our plain old MSI installer to the IS9 Installer
The first two went fine. The last one however resulted in the "upgrade" not being run. Instead, the normal IS9 setup was run. This resulted in two different installations of our program on the target machine. Between the MSI that was already installed, and the MSI contained in the IS9 installer, the differences were that the version had been updated, the product code changed, and the package code changed. The Upgrade code however is identical. During my work with plain MSI files, it was my understanding that two products installed with an MSI could not be installed at the same time if their Upgrade Code was the same.
So, what's going on here? Is my assumption wrong?
How do I get the IS9 installer to "Upgrade" or act as an update to the plain MSI file I've been distributing (and previously updating) to many clients already?
Thanks for the assistance
(6) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 15, 2008
02:49 PM
I'm fairly new to installshield (and MSIs) as well, but my understanding is that a different _product_ code will result in the ability to do multiple installs. From my reading, a new package code, a new product code, and the same upgrade code counts as a major upgrade (even if I couldn't get FindInstalledProducts to find the previous version of our product).
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 15, 2008
02:55 PM
If that is true, it would be contrary to how a plain MSI file update works. In a normal MSI, (as far as I know) it only contains a Product Code, and an Upgrade Code. The Upgrade Code stays constant between all releases of a code, while the product code changes per-version. Anything with an identical product code is treated as the same version, preventing any installation (and allowing uninstallation via product code) of the installed product. Anything with an identical Upgrade code can be installed again, but it acts as a replacement or update to the originally installed product. If this is a "major" or "minor" upgrade as far as MS is concerned, I don't know. But it does prevent it.
I *assume* it works the same here but obviously my assumptions are suspect.
I *assume* it works the same here but obviously my assumptions are suspect.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 15, 2008
03:05 PM
Simplifying a bit and ignoring some special cases, but: True, only one product with a given product code can be on a system.
If two products have different product codes but the same upgrade code, one can update the other if you teach the Upgrade table about the relationship. The Upgrades view in the InstallShield environment makes it easier to set this up.
There's an "Updating Applications" section of the online help that should clear some things up.
If two products have different product codes but the same upgrade code, one can update the other if you teach the Upgrade table about the relationship. The Upgrades view in the InstallShield environment makes it easier to set this up.
There's an "Updating Applications" section of the online help that should clear some things up.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 15, 2008
03:41 PM
Going with Robert's simplified version, makesure the ALLUSERS property is set to 1 ( ALLUSERS=1 ) so that you stick with Per-Machine installs.
You really don't want to let any per-user installs slip out into the wild as servicing them is really hard ( impossible ).
You really don't want to let any per-user installs slip out into the wild as servicing them is really hard ( impossible ).
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 15, 2008
03:46 PM
GameComm wrote:
The Upgrade Code stays constant between all releases of a code, while the product code changes per-version. Anything with an identical product code is treated as the same version, preventing any installation (and allowing uninstallation via product code) of the installed product. Anything with an identical Upgrade code can be installed again, but it acts as a replacement or update to the originally installed product. If this is a "major" or "minor" upgrade as far as MS is concerned, I don't know. But it does prevent it.
While an UpgradeCode typically never changes, A ProductCode may or may not change from version to version depending on if you want to service the upgrade as a Major Upgrade or a Minor Upgrade. The PackageCode changes EVERY build.
Don't Change the PackageCode and you get Maintenance UI experience.
(remaining examples assume changing PackageCode)
Change the ProductCode and you end up with a double install ( this is how multiple instance MSI works )
Change the ProductCode, wire up the Upgrade Table, change one of the first three fields of ProductVersion ( a.b.c.d ) and install in the same context ( per-machine or per-user ) and you end up with a Major Upgrade. Mess one of those up and you end up with the above double install.
Don't Change the ProductCode and you end up with a Minor Upgrade ( or small upgrade but there isn't much difference between those two. )
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎Jul 17, 2008
10:08 AM
Thanks for all the help. I *think* the problem is resolved as a result of these suggestions, but I'm not sure due to.... other problems I'm running into now (.Net Installer Class OnBeforeUninstall calls not being made, files being left behind if they were unchanged from a previous install after an upgrade and then an uninstall, etc.)