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

Reply via email to