> -----Original Message-----
> From: tzleon [mailto:tzl...@gmail.com]
> Sent: Monday, June 25, 2012 06:52
> To: wix-users@lists.sourceforge.net
> Subject: [WiX-users] How to mix 32bit driver and 64bit driver into same
> package?
> 
> I wish to mix 32bit driver and 64bit driver into same package, but the
problem
> is the two referenced library difxapp_x64 and difxapp_x85 can't be
imported
> into same package, otherwise, there is a error as below:
> 
> "Error        1       Duplicate symbol 'CustomAction:MsiProcessDrivers'
found.
> This
> typically means that an Id is duplicated. Check to make sure all your
> identifiers of a given type (File, Component, Feature) are unique.
> C:\Program Files (x86)\Windows Installer XML v3.6\bin\difxapp_x86.wixlib
>       0       1
> HKeySetup"
> 
> How to solve this problem?

I was unable to find a method for creating an MSI that works on both 32-bit
and 64-bit Windows when using DIFxApp.  After some investigation, I
concluded that it was impossible without having access to source code of
DIFxApp to create a custom version of DIFxApp.  The solution I used was as
follows:

1.  All bit-agnostic files were specified to be stored in a common media CAB
file with a bit-agnostic filename.  This way, the same software distribution
download can support both 32-bit and 64-bit Windows without significant
increase in file size - both 32-bit and 64-bit MSI files can share the same
cabinet.

2.  All 32-bit specific or 64-bit specific files were specified to be stored
in separate CAB files: one for 32-bit and one for 64-bit.

3.  The WiX source code was customized so that it could be compiled for
either 32-bit or 64-bit use using conditional compilation.

4.  The build script builds both 32-bit and 64-bit versions using
appropriate conditional compilation variables.  The resulting shared cabinet
files (#1) are then compared to be sure they are identical, and then the
output directories are merged.

5.  Launch conditions are used to prevent the 32-bit MSI from running on
64-bit Windows.  The 64-bit MSI is specified as being a 64-bit MSI, so it
won't even run on a 32-bit system.

6.  The bootstrapper decides which MSI to use, based on the bitness of the
computer.

This solution allows you to use the MSI files as-is without fussing with any
special command line parameters (e.g. for transforms).  Maybe there is a
cleaner way to do this but I haven't found it.


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to