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