WiX v4 Random Fact No. 4
WiX Toolset v4-preview.0 is available. For more information, see Rob’s blog post on the matter.
In WiX v3, Burn and the extension custom actions were mostly built on 32-bit foundations that knew how to talk to 64-bit systems when necessary. For example, most of the custom actions ran as 32-bit DLLs but could disable the redirection that typically keeps 32-bit code out of the 64-bit portion of the file system and registry. Burn was fully 32-bit but of course had no problem installing 64-bit packages.
Aside: Some custom actions couldn’t be 32-bit and handle certain 64-bit aspects of the system, so that handful were built as 64-bit.
Aside #2: And back in the long-ago time, there were 64-bit versions of most custom actions: For Itanium. Let us speak of that no further.
The general approach worked well but requires the OS to support running 32-bit code via our happily-named friend WoW64. Server editions of Windows have made WoW64 optional for quite a while now, presumably as a way of reducing attack surface area. Burn bundles and many of WiX’s custom actions fail to run in such an environment.
Until WiX v4.
WiX v4 includes support for custom actions and Burn bundles in:
- 32-bit x86
- 64-bit x64
- 64-bit ARM64
-arch switch (and synonym switch
-platform) on the
wix.exe command line determine the set of platform-specific Burn engines and custom actions that will be included.
That means it’s now possible to install a bundle with MSI packages containing WiX custom actions on a machine without WoW64.
That said, 32-bit x86 code runs almost everywhere (even on ARM64, using the ARM64 variety of WoW64) so it’s a reasonably safe default.