I have a long lived installer which is using RegistryValue to setup a .Net COM server. The installer is 32 bit. I would like to have the registry settings also set for 64 bi
You would need to write the bootstrapper yourself.
WiX doesn't support mixed 32/64-bit packages because Windows Installer doesn't support them. However, some commercial tools use a custom bootstrapper and 2 MSI files to handle a mixed installer.
I had the same problem with a custom Windows Shell Overlay Extension that must provide a 32-bit Dll for 32-bit Windows and a 64-bit Dll for 64-bit Windows. My 32-bit msi file would only write the registry entries to the WoW6432 node on the 64-bit system, so the shell extension didn't work.
The solution (tested with wix-3.5.2519.0 on Win7 x86 and x64):
Example:
<Component Id="shellext_32.dll" DiskId="1" Guid="YOUR-GUID1">
<!-- this will be installed only on a 32-bit System-->
<Condition><![CDATA[NOT Msix64]]></Condition>
<!-- copy 32-bit Dll file...-->
<File Id="blah blah... />
<RegistryKey Id="MyShellIconOverlay" Root="HKLM"Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\MyIconOverlay" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Value="{GUID...}" />
</RegistryKey>
</Component>
<Component Id="shellext_64.dll" DiskId="1" Guid="YOUR-GUID2" Win64="yes">
<!-- this will be installed only on a 64-bit System-->
<Condition><![CDATA[Msix64]]></Condition>
<!-- copy 64-bit Dll file...-->
<File Id="blah blah... />
<!-- the following Registry Key will NOT be created inside the WoW6432
<RegistryKey Id="MyShellIconOverlay64" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\MyIconOverlay64" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Value="{GUID...}" />
</RegistryKey>
</Component>
References: