Have you looked at what things like Visual Studio do if you choose a non-default install location (I mention it since I know it installs 32-bit and 64-bit components). My guess is that they will behave the same. I don't think I've seen a guideline covering installation of mixed components and where I've seen it done, 64-bit stuff goes into ProgramFiles64Folder and 32-bit stuff goes into ProgramFilesFolder with only one of them being customizable during installation.
By the way, the 32-bit components would be the same between 64-bit and 32-bit components so if you create two installers, the 32-bit components should go in a merge module so component IDs remain consistent. Brant Gurganus http://gurganus.name/brant On Tue, Sep 22, 2009 at 3:32 PM, Nate Hekman <hek...@geo-slope.com> wrote: > I just tried your suggestion, Brant, at least what I'm supposing you mean. > > - I set the Package's Platform='x64' > - I extended the <Directory> section to include the ProgramFiles64Folder. > The Bin folder buried under there has an Id of BINDIR64. > - I created a new <DirectoryRef Id="BINDIR64"> containing a Win64="yes" > Component, with the 64-bit dll and RegistryValues, and using [BINDIR64] in > the Value. > > Presumably that should put the 64-bit dll under the Program Files folder and > register it correctly, while keeping all the 32-bit components under Program > Files (x86). > > And in fact that does work. But only if the user who's installing accepts > the default install path (C:\Program Files (x86)). If they choose a > different install path (L:\Foo for example), then the 32-bit stuff goes to > L:\Foo but the 64-bit still goes to C:\Program Files. Not what the user > intended. Not good form. > > > Nate > > > > > -----Original Message----- > From: Brant Gurganus [mailto:br...@gurganus.name] > Sent: Tuesday, 22 September 2009 10:48 AM > To: General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] Installing 64-bit shell extension with a 32-bit app > > What is preventing you from installing it in the 64-bit program files > where it is supposed to go? > > Brant Gurganus > http://gurganus.name/brant > > > > On Tue, Sep 22, 2009 at 12:14 PM, Nate Hekman <hek...@geo-slope.com> wrote: >> I have a 32-bit application that include a 32-bit shell extension dll >> that handles thumbnails and a few other shell extensions. I want to add >> a 64-bit version of that same dll to the mix to get the same thumbnails >> et al working in 64-bit Windows Explorer. >> >> >> >> Can someone tell me (or point me to documentation) what the proper way >> is to do this? >> >> >> >> Here's what I've been using for the 32-bit dll. The RegistryValue line >> with [BINDIR] in the Value is the line that causes me trouble when I get >> to 64-bit. >> >> >> >> <DirectoryRef Id="BINDIR"> >> >> <Component Id="GSIShell" >> Guid="2EAEEF9B-7385-4d12-811C-68E26FB5E66D"> >> >> <File Id="GSIShellDLL" Source="$(var.TargetDir)GSI.Shell.dll" >> KeyPath="yes" Checksum="yes"/> >> >> <RegistryKey Root="HKCR" >> Key="CLSID\{5D1A01C2-BD6D-45c7-BC8E-C419E2F08B70}" >> Action="createAndRemoveOnUninstall"> >> >> <RegistryValue Type="string" Value="GszIconShlExt Class"/> >> >> <RegistryKey Key="InprocServer32" >> Action="createAndRemoveOnUninstall"> >> >> <RegistryValue Type="string" >> Value="[BINDIR]\gsi.shell.dll"/> >> >> <RegistryValue Type="string" Name="ThreadingModel" >> Value="Apartment"/> >> >> </RegistryKey> >> >> </RegistryKey> >> >> </Component> >> >> </DirectoryRef> >> >> >> >> [BINDIR] is defined earlier in the .wxs file as: >> >> >> >> <Directory Id="TARGETDIR" Name="SourceDir"> >> >> <Directory Id="ProgramFilesFolder"> >> >> <Directory Id="COMPANYDIR" Name="MyCompany"> >> >> <Directory Id="SOFTWAREDIR" Name="MyApplication"> >> >> <Directory Id="BINDIR" Name="Bin"/> >> >> </Directory> >> >> </Directory> >> >> </Directory> >> >> >> >> So on a 64-bit OS that installs the GSI.Shell.dll file into C:\Program >> Files (x86)\MyCompany\MyApplication\Bin, and the Registry key >> HKCR\Wow6432Node\CLSID\{5D1A01C2-BD6D-45c7-BC8E-C419E2F08B70}\InprocServ >> er32's value is "C:\Program Files >> (x86)\MyCompany\MyApplication\Bin\gsi.shell.dll". >> >> >> >> Then I add the 64-bit dll similarly. The file needs to be placed in the >> same bin folder as the 32-bit version, but I want to be editing the >> 64-bit portion of the Registry, so I add Win64="yes" to the Component. >> >> >> >> <DirectoryRef Id="BINDIR"> >> >> <Component Id="GSIShell64" >> Guid="2EAEEF9B-7385-4d12-811C-68E26FB5E66D" Win64="yes"> >> >> <File Id="GSIShell64DLL" >> Source="$(var.TargetDir)GSI.Shell64.dll" KeyPath="yes" Checksum="yes"/> >> >> <RegistryKey Root="HKCR" >> Key="CLSID\{5D1A01C2-BD6D-45c7-BC8E-C419E2F08B70}" >> Action="createAndRemoveOnUninstall"> >> >> <RegistryValue Type="string" Value="GszIconShlExt64 Class"/> >> >> <RegistryKey Key="InprocServer32" >> Action="createAndRemoveOnUninstall"> >> >> <RegistryValue Type="string" >> Value="[BINDIR]\gsi.shell64.dll"/> >> >> <RegistryValue Type="string" Name="ThreadingModel" >> Value="Apartment"/> >> >> </RegistryKey> >> >> </RegistryKey> >> >> </Component> >> >> </DirectoryRef> >> >> >> >> This gives me an error on the RegistryValue line with [BINDIR] in the >> Value: >> >> >> >> Error LGHT0204: ICE80: This 64BitCompnent GSIShell64 uses 32BitDirectory >> BINDIR. >> >> >> >> I've done a lot of googling and most responses are "you shouldn't be >> installing 64-bit dlls with a 32-bit app". But that's absolutely not >> true, as these dlls are used by the shell, not by my application. There >> must be other people with this same problem. What's the solution? >> >> >> >> Thanks for any help! >> >> >> >> >> >> Nate >> >> >> >> ------------------------------------------------------------------------------ >> Come build with us! The BlackBerry® Developer Conference in SF, CA >> is the only developer event you need to attend this year. Jumpstart your >> developing skills, take BlackBerry mobile applications to market and stay >> ahead of the curve. Join us from November 9-12, 2009. Register now! >> http://p.sf.net/sfu/devconf >> _______________________________________________ >> WiX-users mailing list >> WiX-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/wix-users >> > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry® Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9-12, 2009. Register now! > http://p.sf.net/sfu/devconf > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry® Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9-12, 2009. Register now! > http://p.sf.net/sfu/devconf > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > ------------------------------------------------------------------------------ Come build with us! The BlackBerry® Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9-12, 2009. Register now! http://p.sf.net/sfu/devconf _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users