3

I'm using WiX to deploy my application. This application uses a registry key which is shared between x64 and x86 processes. Thus it must not use the Wow64Node. The application uses the KEY_WOW64_64KEY flag to achieve this.

But how can this be done using an MSI build with WiX? Currently I use an x86 and an x64 version of the installer, but that gives me a large overhead. Is it possible to disable registry redirection in WiX? I found the DisableRegistryReflection attribute, but that does not seem to have influence on redirection. Another idea would be to merge the two installers into a single file, like it is possible with languages. But I have in mind that that's not supported.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Michael Stoll
  • 1,334
  • 3
  • 13
  • 35

1 Answers1

2

This could be done with an unified 32/64-bit package, but WiX doesn't support it. Some commercial setup authoring tools support it.

When using separate packages, 32-bit installers will use the 32-bit location on 64-bit systems. So to avoid registry redirection you should distribute a 32-bit package for 32-bit systems and a 64-bit package for 64-bit systems.

In 64-bit installers the registry entry component needs to be marked as 64-bit. In WiX you can do this by setting Win64 to "yes" for your registry components.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Cosmin
  • 21,216
  • 5
  • 45
  • 60
  • It's Windows Installer that doesn't support "unified" packages. – Bob Arnson May 10 '11 at 13:58
  • Yup, MSI missed the boat on that one big time. – Christopher Painter May 10 '11 at 19:41
  • This is how I'm doing it now. Is this the only solution? – Michael Stoll May 11 '11 at 07:35
  • If you look at [SQL Express 2008 setup packages](http://www.microsoft.com/downloads/de-de/details.aspx?FamilyID=58ce885d-508b-45c8-9fd3-118edd8e6fff) there are three different types, x86, x64 and combined. With just a small overhead for the combined package. Do you know how they do it? I assume that it's the bootstrapper that decides which version to use, but how do they minimize the package size? – Michael Stoll May 11 '11 at 07:40
  • The usual approach is an EXE bootstrapper which uses some transforms (MST files) to modify the MSI dynamically based on the target platform 32-bit or 64-bit. This is used by most setup authoring tools which generate the unified installer for you. – Cosmin May 11 '11 at 12:26