My advice would be to use the 32 bit install location, but if you really want 
to put it in the 64 bit location, you can author two components, one for the 
server and one for the class associated with the server. The server can be 
marked as 64 bit. The class component marked as x86. Mark the <Class> element 
as "Advertise="no"", which makes the registration use the registry table 
instead of the class table. In this context you can reference the server by its 
file ID using the Server="<fileId>" attribute on the class element.
However, depending on how complex your class definition is, there are bugs in 
WIX that can make defining the class with advertise="no" painful. Also, this 
arrangement may give a different warning about the file reference being outside 
of the component that defines it, but that they are both part of the same 
feature. This warning is ignorable in the given scenario, but I don't know if 
that is sufficient for you.
--
Bryan

-----Original Message-----
From: Paul Baker [mailto:paulbak...@gmail.com]
Sent: Wednesday, March 03, 2010 1:40 AM
To: wix-users@lists.sourceforge.net
Subject: [WiX-users] Is it possible to install a 32-bit COM server DLL under 
ProgramFiles64Folder?

We're currently building an MSI targeting the x64 platform. Most of our 
binaries are 64-bit, so we have placed each one into a 64-bit component under 
the ProgramFiles64Folder directory. However, we also need to install a 32-bit 
COM in-process server DLL. We're having issues because we'd ideally like this 
to be placed alongside the rest of our binaries - inside ProgramFiles64Folder.

I believe the standard way to install an in-process server DLL is to use a 
single component containing both a File element and a Class element, the latter 
for the COM registration information.
Unfortunately, this doesn't work in our case - for the registration information 
to be handled correctly the component must be 32-bit (Win64="no"). However, if 
is then it placed under ProgramFiles64Folder, Light generates an error: "ICE80: 
32BitComponent uses 64BitDirectory".

Is there any way we can get this to work? Approaches we have considered include:

1. Placing the File element and the Class element into different components, so 
that one can be 64-bit and the other 32-bit. This seems to work but causes 
Light to generate a warning: "ICE69: Mismatched component reference". Is this 
something to be worried about?

2. Using some alternative method to install the COM registration information. 
Is there a recommended way to install such information into the 32-bit part of 
the registry from a 64-bit (Win64="yes") component?

3. Giving up and placing the COM DLL alone inside ProgramFilesFolder.

Are there any other ways to get what we'd like: all of our files in the same 
location?

------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval Try the new software tools for 
yourself. Speed compiling, find bugs proactively, and fine-tune applications 
for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to