cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
AlexandrV
Level 3

HELP! Downgrade and major upgrades

We created our installer with using IS2009 Premier Edition, the project type is InstallScript MSI project.
We released version 1.0 (sent to customers).

Now we're in process of release version 2.0, it will be the major upgrade (new Product Code, the same Upgrade code).

We found a very bad thing: our 1.0 version can be installed over 2.0 - it creates two items in ARP and both version became nonworking in this case.

I did some research and found that it should be a special item added to Upgrades view to make it work properly, ISPreventDowngrade.

Here is the quotation from IS2008 or IS2009 documentation:
"When you create a new Basic MSI or InstallScript MSI project, InstallShield automatically adds support for preventing the current installation from overwriting a future major version ISPreventDowngrade".

But it is not true for the InstallScript MSI project type!!!
It works only for Basic MSI.

So, I have two questions:
Is this a InstallShield bug?
How can I fix it considering that I cannot change installer script of my 1.0 version?

thanks.
Labels (1)
0 Kudos

(3) Replies
J_anitha
Level 8

Why dont you get your installed version from registry, compare it with your current version, give appropriate message and abort. You can do this check in your OnBegin().
0 Kudos
AlexandrV
Level 3

J_anitha wrote:
Why dont you get your installed version from registry, compare it with your current version, give appropriate message and abort. You can do this check in your OnBegin().


because, as I already mentioned, we already released version 1.0 and I cannot change its code.
The real problem is the InstallScript MSI project BY DEFAULT does not include downgrade protection in case of major upgrade. If its minor upgrade, it works fine, it says "higher version is installed" and exits. If I install v1.0 over v2.0 and it's major upgrade, it does not recognize that higher version is installed and installs v1.0 along to v2.0 which makes both versions nonworking.
0 Kudos
AlexandrV
Level 3

After couple of days fighting with the problem I found a solution. I installed 1.0 version and found all the registry keys that are added by installation, then I created .reg file to imitate that 1.0 version 999 is installed.
My 2.0 installer adds these registry values and this makes 1.0 installer believe that higher version is installed and prevent downgrade.

It works, by I really disappointed by the InstallShield default behavior, it should be done without any manual work or at least it should be some highlighted item in the project wizard.
0 Kudos