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 <[email protected]> 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<[email protected]>
>> 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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/wix-users