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

Reply via email to