You can't do this while also using Product/@Id="*", a product with the same version but different ID is seen as a different package. The best solution that I've come up with is to increase the fourth version field and block installation when the version number is the same. Windows Installer ignores the fourth field, so the two packages have effectively the same version.
We then always increment one of the first three version fields as soon as a public release goes out. This means that the only people who ever see the 'error' message about another 'build' being installed are internal testers. One added benefit of this is that this means the QA team is testing in the same environment as our customers. We don't have to debug weird issues that only occur when a user installs one internal build on top of another. . Code: <Upgrade Id="$(var.Property_UpgradeCode)"> <UpgradeVersion OnlyDetect="yes" Minimum="$(var.version)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" /> <UpgradeVersion OnlyDetect="no" Maximum="$(var.version)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" /> <!-- Detect for changes in 4th field only --> <UpgradeVersion Property="ANOTHERBUILDINSTALLED" Maximum="$(var.version)" Minimum="$(var.version)" IncludeMinimum="yes" IncludeMaximum="yes" OnlyDetect="yes" /> </Upgrade> <CustomAction Id="CA_BlockOlderVersionInstall" Error="!(loc.LaunchCondition_LaterVersion)" /> <CustomAction Id="CA_BlockAnotherBuildInstall" Error="!(loc.LaunchCondition_AnotherBuild)" /> <InstallExecuteSequence> <Custom Action="CA_BlockOlderVersionInstall" After="FindRelatedProducts"> <![CDATA[NEWERVERSIONDETECTED]]> </Custom> <!-- Prevent installation on 4th version field change only --> <Custom Action="CA_BlockAnotherBuildInstall" After="FindRelatedProducts"> <![CDATA[ANOTHERBUILDINSTALLED]]> </Custom> </InstallExecuteSequence> <InstallUISequence> <Custom Action="CA_BlockOlderVersionInstall" After="FindRelatedProducts"> <![CDATA[NEWERVERSIONDETECTED]]> </Custom> <Custom Action="CA_BlockAnotherBuildInstall" After="FindRelatedProducts"> <![CDATA[ANOTHERBUILDINSTALLED]]> </Custom> </InstallUISequence> Hope that helps :) On Fri, Apr 9, 2010 at 6:59 PM, Viv Coco <vcotirl...@hotmail.com> wrote: > Hi all, > > I am interested in doing only major upgrades in my installer, this is > why I have in the code for Product and Package the Id="*": > > [code] > <Product Id="*" Name="$(var.ProductName)" > Version="$(var.CurrentVersion)" Language="1033" > Manufacturer="$(var.CompanyName)" UpgradeCode="$(var.UpgradeCode)"> > <Package Id="*" InstallerVersion="301" Compressed="yes" /> > [/code] > > > It might happen that we freeze internally the release 2.2.0, I build a > package, give it to the QA they do tests, find bugs and those bugs are > fixed, so internally I have to do another msi package, with the same > version (2.2.0) but with the newer binaries (which contain the fix). In > this case I have to rebuild the msi package and I would like when the QA > installs it to (major) UPGRADE their already installed version 2.2.0 > even though the version is the same, but to get the new binaries. > > In order to achieve that, I wanted to have the upgrade table like: > [code] > <Upgrade Id="$(var.UpgradeCode)"> > <UpgradeVersion OnlyDetect="no" Property="OLDAPPFOUND" Minimum="0.0.1" > IncludeMinimum="yes" Maximum="$(var.CurrentVersion)" IncludeMaximum="yes" /> > <UpgradeVersion OnlyDetect="yes" Property="NEWAPPFOUND" > Minimum="$(var.CurrentVersion)" IncludeMinimum="no" /> > </Upgrade> > [/code] > > but I get the warning: > "warning LGHT1076: ICE61: This product should remove only older versions > of itself. The Maximum version is not less than the current product. > (2.2.0 2.2.0)" > > This is why, I changed to (IncludeMaximum="no"): > > [code] > <Upgrade Id="$(var.UpgradeCode)"> > <UpgradeVersion OnlyDetect="no" Property="OLDAPPFOUND" Minimum="0.0.1" > IncludeMinimum="yes" Maximum="$(var.CurrentVersion)" IncludeMaximum="no" /> > <UpgradeVersion OnlyDetect="yes" Property="NEWAPPFOUND" > Minimum="$(var.CurrentVersion)" IncludeMinimum="no" /> > </Upgrade> > [/code] > > and I was able to install the same product TWICE which is of course not > what I wanted. > > Can smbd tell me how could I get what I want: > - to NOT have the same product installed twice > - to (major) UPGRADE the same version of the product (same version, but > different msi package with different binaries) > > Thx, > Viv > > ------------------------------------------------------------------------------ > Download IntelĀ® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users