You need two components, one marked 32-bit and the other 64-bit. Each will write to the appropriate areas of the system. Yes, you will have some duplicate information shared in both components, but each will refer to the appropriate binary and each should be under the appropriate directory.
-----Original Message----- From: Quinton Tormanen [mailto:quint...@deltacompsys.com] Sent: Friday, December 18, 2009 9:17 AM To: General discussion for Windows Installer XML toolset. Subject: [WiX-users] Registering 32- and 64-bit versions of COM InProc Server I apologize if this has been asked and answered before. I couldn't find anything on it on the WiX archive or anywhere else on the web after much hair pulling. Any knowledge that can be imparted would be appreciated. On 64-bit OSes I need to install both a 32-bit and 64-bit version of my Inproc COM server. Here is what my existing WiX source looks like for installing and registering the 32-bit COM server: <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLDIR" Name="RMCLink"> <Component Id="COMComponent" Guid="FF1B1ACD-AE7C-48CD-BC42-F059614AFC8B"> <File Source="Image\RMCLink.dll" Vital="yes" /> <TypeLib Id="E430ED85-D7FA-4303-92BD-68B671F234AB" Advertise="yes" MajorVersion="3" MinorVersion="0" Description="RMCLink 3.0 Type Library" HelpDirectory="INSTALLDIR" Language="0"> <AppId Id="E93F288A-D774-49D6-AB59-6A1BF08EC8BF" Advertise="yes"> <Class Id="CA7473F7-2DF3-45CE-A180-CA7CBF81F190" Advertise="yes" Context="InprocServer32" Programmable="yes" ThreadingModel="both" Description="RMCLinkServer Class"> <ProgId Id="RMCLink.RMCLinkServer.3"> <ProgId Id="RMCLink.RMCLinkServer" /> </ProgId> </Class> </AppId> </TypeLib> </Component> </Directory> </Directory> So, I need to add this 64-bit version for 64-bit builds: <File Source="Image\RMCLink64.dll" Vital="yes" /> How do I get it in there? Notice that both the x86 and x64 versions share the same TypeLib, AppId, and CLSID. In terms of registering, all I need to do is get the installer to add the InprocServer32 to the non-WOW6432Node version of the CLSID node, so I was toying with something like this under the INSTALLDIR Directory element: <Component Id="COMComponent" Guid="*" Win64="yes"> <File Source="Image\RMCLink64.dll" Vital="yes" /> <Class Id="CA7473F7-2DF3-45CE-A180-CA7CBF81F190" Advertise="yes" Context="InprocServer32" Programmable="yes" ThreadingModel="both" Description="RMCLinkServer Class"> <ProgId Id="RMCLink.RMCLinkServer.3"> <ProgId Id="RMCLink.RMCLinkServer" /> </ProgId> </Class> </File> </Component> However, it seems wrong to have that much duplicate information. Also, I expect that I should change the directory to "ProgramFilesFolder64", although I'm not sure if it's OK to have both the 32-bit and 64-bit components in my install directory. Anyone know the correct way to do this? Quinton Tormanen Software Engineer Delta Computer Systems, Inc. http://www.deltamotion.com ---------------------------------------------------------------------------- -- This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users