I think I've found a solution... wrapping the 32-bit CommonFilesFolder
inside ProgramFilesFolder seems to work.

The 64-bit components are then installed in APPLICATIONFOLDER or
wherever the user consuming the merge module decides, while the 32-bit
components are forced into the 32-bit CommonFilesFolder.

<Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFiles64Folder">
                <Directory Id="APPLICATIONFOLDER" Name="WixProject1">
                        <Merge Id="MyModule" Language="0" DiskId="1" 
SourceFile="Module.msm" />
                </Directory>
        </Directory>
</Directory>


<Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="MergeRedirectFolder" Name=".">
                <Component Id="cmp1" 
Guid="D23E4C6A-E9DC-11DE-88E3-4B5155D89593" Win64="yes">
                        <File Source="1.txt"/>
                </Component>
        </Directory>

        <Directory Id="ProgramFilesFolder">
                <Directory Id="CommonFilesFolder">
                        <Component Id="cmp2" Guid="*" Win64="no">
                                <File Source="2.txt"/>
                        </Component>
                </Directory>
        </Directory>
</Directory>


On Tue, Dec 15, 2009 at 10:18 PM, John Aldridge <j...@jjdash.demon.co.uk> wrote:
> I've just tried that, and it doesn't work. The error message goes away,
> and the 32 bit component is correctly installed to CommonFilesFolder,
> but the 64 bit component from the merge module is dropped into D:\ (the
> drive with the most free space), rather than being put into
> ProgramFiles64Folder.
>
> Thank you for the suggestion, though.
>
> --
> Cheers,
> John
>
> On 14/12/2009 22:51, Sascha Beaumont wrote:
>> I came across an almost identical problem last week :) I'm guessing
>> it's because your merge module is defined as a subcomponent of a
>> 64-bit folder
>>
>>>          <Directory Id="TARGETDIR" Name="SourceDir">
>>>              <Directory Id="ProgramFiles64Folder">
>>>                  <Merge Id="wmm" Language="0" DiskId="1" 
>>> SourceFile="$(var.WixMergeModule1.TargetPath)" />
>>>              </Directory>
>>>          </Directory>
>>
>> Try this instead:
>>
>>           <Directory Id="TARGETDIR" Name="SourceDir">
>>               <Directory Id="ProgramFiles64Folder" />
>>               <Merge Id="wmm" Language="0" DiskId="1"
>> SourceFile="$(var.WixMergeModule1.TargetPath)" />
>>           </Directory>
>>
>> Cheers,
>> Sascha
>>
>> On Tue, Dec 15, 2009 at 12:16 AM, John Aldridge<j...@jjdash.demon.co.uk>  
>> wrote:
>>> I want to have an (x64) merge module which installs some 64 bit files to
>>> MergeRedirectFolder, and some 32 bit files to the 32 bit
>>> CommonFilesFolder. My (simplified) merge module wxs is...
>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";>
>>>>      <Module Id="WixMergeModule1" Language="0" Version="1.0.0.0">
>>>>          <Package Id="e2ff78a9-bb72-4a5f-a259-16a004f2bfdf" 
>>>> Manufacturer="WixMergeModule1" InstallerVersion="200" />
>>>>
>>>>          <Directory Id="TARGETDIR" Name="SourceDir">
>>>>
>>>>              <Directory Id="MergeRedirectFolder">
>>>>                  <Component Id="isicor11.dll.64" 
>>>> Guid="{7BA1C1B7-0E5D-4c0a-BE4E-B3F8F42C3FF8}" Win64="yes">
>>>>                      <File Id="isicor11.dll.64" 
>>>> Source="e:\trunk\software\bin\Release.x64\isicor11.dll"/>
>>>>                  </Component>
>>>>              </Directory>
>>>>
>>>>              <Directory Id="CommonFilesFolder">
>>>>                  <Component Id="isicor11.dll.32" 
>>>> Guid="{FFA0AA9D-7DB0-41fd-BE32-A2EF3482AA5D}" Win64="no">
>>>>                      <File Id="isicor11.dll.32" 
>>>> Source="e:\trunk\software\bin\Release.Win32\isicor11.dll"/>
>>>>                  </Component>
>>>>              </Directory>
>>>>
>>>>          </Directory>
>>>>      </Module>
>>>> </Wix>
>>>
>>> and the installer which uses it is
>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";>
>>>>      <Product Id="51db34a7-d1e0-4926-9c95-593427344f21" Name="WixProject1" 
>>>> Language="1033" Version="1.0.0.0" Manufacturer="WixProject1" 
>>>> UpgradeCode="9ef11165-1ce4-4abe-9894-0c264f1a2387">
>>>>          <Package InstallerVersion="200" Compressed="yes" />
>>>>          <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
>>>>
>>>>          <Directory Id="TARGETDIR" Name="SourceDir">
>>>>              <Directory Id="ProgramFiles64Folder">
>>>>                  <Merge Id="wmm" Language="0" DiskId="1" 
>>>> SourceFile="$(var.WixMergeModule1.TargetPath)" />
>>>>              </Directory>
>>>>          </Directory>
>>>>
>>>>          <Feature Id="ProductFeature" Title="WixProject1" Level="1">
>>>>              <MergeRef Id="wmm" />
>>>>          </Feature>
>>>>      </Product>
>>>> </Wix>
>>>
>>> unfortunately this results in the error message
>>>
>>> light.exe(0,0): error LGHT0204: ICE80: This 32BitComponent
>>> isicor11.dll.32.E2FF78A9_BB72_4A5F_A259_16A004F2BFDF uses 64BitDirectory
>>> CommonFilesFolder.E2FF78A9_BB72_4A5F_A259_16A004F2BFDF
>>>
>>> Why does light think CommonFilesFolder is a 64 bit directory?
>>>
>>> How can I achieve what I want to do? (Yes, I know, use wixlibs, but I
>>> can't do that because I need to retain InstallShield compatibility).
>>>
>>> Thanks for any help!
>
> ------------------------------------------------------------------------------
> Return on Information:
> Google Enterprise Search pays you back
> Get the facts.
> http://p.sf.net/sfu/google-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