Unfortunately it's not so easy. There are important differences between doing a 
simple database merge and a full merge-module merge. See 
http://msdn.microsoft.com/en-us/library/aa370081.aspx:



The MsiDatabaseMerge function and the 
Merge<http://msdn.microsoft.com/en-us/library/aa368253(VS.85).aspx> method of 
the Database<http://msdn.microsoft.com/en-us/library/aa368254(VS.85).aspx> 
object cannot be used to merge a module that is included in the installation 
package. They should not be used to merge Merge 
Modules<http://msdn.microsoft.com/en-us/library/aa369820(VS.85).aspx> into a 
Windows Installer package. To include a merge module in an installation 
package, authors of installation packages should follow the guidelines that are 
described in the Applying Merge 
Modules<http://msdn.microsoft.com/en-us/library/aa367572(VS.85).aspx> topic.



MsiDatabaseMerge does not copy over embedded Cabinet 
Files<http://msdn.microsoft.com/en-us/library/aa367841(VS.85).aspx> or embedded 
transforms<http://msdn.microsoft.com/en-us/library/aa368347(VS.85).aspx> from 
the reference database into the target database. Embedded data streams that are 
listed in the Binary 
Table<http://msdn.microsoft.com/en-us/library/aa367825(VS.85).aspx> or Icon 
Table<http://msdn.microsoft.com/en-us/library/aa369210(VS.85).aspx> are copied 
from the reference database to the target database. Storage embedded in the 
reference database are not copied to the target database.



The real logic for merging merge modules is in mergemod.dll, which DTF does not 
attempt to use or expose. So I would not recommend using DTF for this purpose, 
unless you augment it with the object model of mergemod.dll using COM interop. 
I don't have any example code for doing that in C#.



-Jason-



-----Original Message-----
From: Christopher Painter [mailto:chr...@deploymentengineering.com]
Sent: Tuesday, April 21, 2009 8:07 AM
To: General discussion for Windows Installer XML toolset.
Subject: Re: [WiX-users] Using DTF to merge a merge module into an msi package





DTF is meant for creating build automation / installer authoring tools also.  
My guess is he has an MSI that wasn't built using WiX and he'd like to use DTF 
to merge a module (perhaps built using WiX, perhaps not ) into the database.



DTF's Database class has a merge method to handle this.  You can also look at 
the MSI Windows Platform SDK example ( WiMerge.vbs ) for a general overview of 
how this is used.  The examples are in VBScript using the 
WindowsInstaller.Installer automation interface but it'll port over to C#/DTF 
pretty easy.





Christopher Painter, Author of Deployment Engineering Blog

Have a hot tip, know a secret or read a really good thread that deserves 
attention? E-Mail Me





--- On Tue, 4/21/09, Frank Neumann <frank.neumann.karlsho...@web.de> wrote:



> From: Frank Neumann <frank.neumann.karlsho...@web.de>

> Subject: [WiX-users] Using DTF to merge a merge module into an msi package

> To: wix-users@lists.sourceforge.net

> Date: Tuesday, April 21, 2009, 8:29 AM

> I consider using DTF to merge a merge

> module (msm) into an msi package.

> Would you recommend DTF for this purpose? Where can I find

> additional information (tutorial, examples) for it?

>

> Regards,

>

> Frank

>

>


------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and 
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today. 
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to