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