It appears that the reason for running RemoveExistingProducts after
InstallFinalize is to take advantage of file versioning rules: that the new
version of the product will have files in common with the old one, and
therefore that the new install will only replace or update files that need
it; uninstalling the old one then simply decrements the reference counts.
You'll have to be very careful with component identifiers and component
make-up to ensure that this works correctly (see Rob's blog post 'Component
Rules 101' at http://blogs.msdn.com/robmen/archive/2003/10/18/56497.aspx).
Summary: don't change the component GUID if you're installing resources to
the same location as before, and if the files are compatible, and if you
haven't added or removed any resources. Otherwise, do change the component
GUID, and install the file elsewhere.

Running after InstallFinalize can cause problems if you have uninstall
Custom Actions in the old version, if those CAs remove some vital resource
and don't check that the product is being upgraded. If this is the case you
should remove the old product before installing the new one; you lose the
benefit of the reference counting, with the old files being removed before
the new ones are installed, even if they're actually the same version.

As Bob says, you'll have to choose one or the other.

-- 
Mike Dimmick

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of John Robbins
Sent: 30 December 2006 03:40
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Super Upgrade

Hello,

(I'm using WiX 2.0)

While the documentation says that there can be "(min: 0, max: unbounded)"
RemoveExistingProducts under the InstallExecuteSequence element, if you try
it, you get a "Duplicate symbol
'Actions:InstallExecuteSequence/RemoveExistingProducts' found." error
compiling.

What I'd like to have is my install do a complete uninstall of any version
3.XXX product, with a <RemoveExistingProducts Before='InstallValidate'> and
for any version 4.XXX (less than current) installed a
<RemoveExistingProducts After='InstallFinalize'>

I'm not too sharp on the installer technology, but it looks that it might be
possible reading the MSI documentation.

Is what I'm trying to do possible? Thank you very much in advance.



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to