Hi, we have prepared one MSI package with the whole set of our programs (many of our customers buy more than 4 programs which share the same libraries) and we try to persuade our customers to buy all the programs in the same major version so it's not a problem, but there was one case...
The customer didn't want to pay for the upgrade of the old programs (let's say version 1.0), but wanted to buy a another new one (version 2.0). The programs are written in a way the version 1.0 programs can use the version 2.0 libraries. My question is: - how to perform major upgrade (this is how we implemented updates), but leave some program files in lower version? My ideas: A) temporarily change the File table in MSI database to older file version - MSI then shouldn't overwrite them nor delete them, because we have sequenced RemoveExistingProducts action after *InstallExecute* action. B) upgrade the package to version 2.0 and then install 1.0 as another instance using Instance transform - we are afraid it would become hell to service, when the user buys upgrade of programs scattered in different instances C) remove the automatic major upgrade step across major versions (1.0 to 2.0) and two independent install of new version and unistall of the old version. If the user chases not to update some programs, the uninstall doesn't remove all the features. This is still problematic for servicing and doesn't allow good rollback scenario if things go wrong (Transactions are supported in Windows Installer 4.5, but we need to target 3.1) D) split the package to have one msi package for each program - this allows complete independency, but has problems with Add/Remove dialog, no good rollback support, is slower to install, and the installation media requires to be much larger :( Can you help me, how to solve this issue? I'm currently inclined for the temporary File table change, but I'm not sure, how to do it properly. I've looked at this post: http://www.joyofsetup.com/2007/07/01/semi-custom-actions/ which uses WcaAddTempRecord, which uses MsiViewModify(..., MSIMODIFY_INSERT_TEMPORARY, ...) Sadly, I didn't find any MSIMODIFY_UPDATE_TEMPORARY, only MSIMODIFY_UPDATE ( http://msdn.microsoft.com/en-us/library/aa370519(VS.85).aspx <http://msdn.microsoft.com/en-us/library/aa370519%28VS.85%29.aspx> ) Thank you for any help Ondrej Zarevucky ------------------------------------------------------------------------------ Join us December 9, 2009 for the Red Hat Virtual Experience, a free event focused on virtualization and cloud computing. Attend in-depth sessions from your desk. Your couch. Anywhere. http://p.sf.net/sfu/redhat-sfdev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users