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® 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® 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