Using WiX v3, I would like to
* Create a "major" upgrade installer, even when only the fourth
field of the Product Version has changed
* Skip installation if a newer version is installed (again, even
if only the fourth field of the Product Version has changed)
For example, if the new Product Version is 2.3.4.5, I need to create a
single MSI file that can do any of the following:
o Perform an "clean" install
o Upgrade older versions (e.g. 1.5.2.1, 2.0.0.5, and 2.3.4.2)
o Abort installation if a newer version is already installed
(e.g. 2.3.4.9)
For each new version, the values of following properties are changed:
* Product Code GUID
* Package Code GUID
* Product Version Number
The Upgrade Code GUID, all Component GUIDS, and ALLUSERS=1 remain
unchanged from version to version.
I know that according to the MSI documentation, "Windows Installer only
uses the first three fields of the product version. If you include a
fourth field in your product version, the installer ignores the fourth
field" [ http://msdn2.microsoft.com/en-us/library/aa370859(VS.85).aspx
]. However, an earlier WiX post from 9/12/2006 seems to indicate that
even if only the fourth field has changed, some form of a Major Upgrade
is still possible.
MSI ignores the fourth field in ProductVersion so it
doesn't differentiate among ProductVersions that differ only in the
fourth field. So if you set UpgradeVersion elements to detect when the
"same" version is installed, it will treat all 1.0.0.x versions as the
same. You can do "blind" major upgrades so any version is installed (or
any version greater-than-or-equal-to), which would let you increment
just the fourth field.
--
sig://boB
[ http://www.nabble.com/Re%3A-Several-doubts-on-Upgrades-p6272185.html ]
I am unclear on what is meant by a "blind" major upgrade.
In the InstallExecuteSequence, I have the entry <RemoveExistingProducts
After="InstallFinalize" />
If I do not include an <Upgrade> section, the following things seem to
hold true:
* Both older and newer versions can install
* Both the old and new versions are listed in Add/Remove Programs
* Rerunning the installer after that version has been installed
appears to shortcut the installation
If I do include an <Upgrade> section,
<Upgrade Id="{UPGRADE-CODE-GUID}">
<UpgradeVersion Minimum="0.0.0.0" Maximum="$(var.Version)"
Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes"
IncludeMaximum="no" IgnoreRemoveFailure="no" />
<UpgradeVersion Minimum="$(var.Version)" IncludeMinimum="no"
Property="NEWERVERSIONSINSTALLED" OnlyDetect="yes" />
</Upgrade>
the following things seem to hold true:
* A newer version will uninstall the older version IF any of the
first three version parts have changed
* Only the most recently installed version is listed in Add/Remove
Programs (good)
* If only the fourth version part has changed, the executing MSI
will "upgrade" the current installation, even if the Product Version of
the executing MSI is less than the currently installed version (bad)
* Rerunning the installer after that version has been installed
appears to shortcut the installation
Is it possible to obtain the desired behavior? I appreciate any
suggestions or information.
Thank you,
Matthew
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users