cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Jeff2008
Level 6

Major Upgrade + ISPreventDowngrade + 4 numbers version

Basic MSI project, InstallShield 2010 (no SP1)

I have confirmed that the ISPreventDowngrade will prevent version 1.0.0.0 to be installed if 1.0.1.0 is installed in both case of minor upgrade and major upgrade.

However, if the version would be 1.0.0.0 and 1.0.0.1, in the case that 1.0.0.1 is a major upgrade from 1.0.0.0, the ISPreventDowngrade won't prevent 1.0.0.0 to be installed on top of 1.0.0.1 afterward. In that case we end up with two entry in the add/remove programs.

Just to clarify things a bit, first I create 1.0.0.0 and then 1.0.0.1 which is a major upgrade from 1.0.0.0. Then I install 1.0.0.0 and upgrade with 1.0.0.1. Once that is done, I can install 1.0.0.0 on top of 1.0.0.1.

Is this a bug or an intended feature? This is pretty problematic for us right now.

Thanks
Labels (1)
0 Kudos
(5) Replies
Lurean
Level 8

the Windows installer engine only uses the first 3 places of the product number.

what this means is that as far as the engine is concerned. Version 1.0.0.0 and version 1.0.0.1 are the same version. All Product version comparisons are based on this limitation of the engine.
0 Kudos
Jeff2008
Level 6

Hi Lurean,

Thanks for your reply, it might explain the problem, but if from 1.0.0.0 and 1.0.0.1 it was a minor upgrade, then the ISPreventDowngrade will prevent installing 1.0.0.0 on top of 1.0.0.1. I'm just wondering why it's different in the case of a major upgrade.
0 Kudos
Jeff2008
Level 6

Or maybe it's not the ISPreventDowngrade that prevent the installation and it's something else, yeah, it seems to pop-up earlier than that...
0 Kudos
Lurean
Level 8

http://msdn.microsoft.com/en-us/library/aa370859(VS.85).aspx

explains that the 4th field of the ProductVersion property is completely ignored by the Windows Installer Engine.

ISPreventDowngrade I believe relies on this fact and only compares the first 3 fields of the product version to determine if it is a downgrade.

Microsoft recommends not using the "small update" and doing a "minor upgrade" instead.

http://msdn.microsoft.com/en-us/library/aa370579(VS.85).aspx
0 Kudos
Stefan_Krueger
Level 9

Actually, one of the requirements for a Major Upgrade is that the ProductVersion must be incremented, which means it must be incremented in the first three fields (since the 4th field of ProductVersion has no practical meaning in Windows Installer). So upgrading from 1.0.0.0 to 1.0.0.1 even when changing the ProductCode is not a valid Major Upgrade.
Stefan Krueger
InstallSite.org
0 Kudos