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

Reply via email to