Search code examples
wixwindows-installer32bit-64bitfirebreath

Create an msi package which installs both 32-bit and 64-bit resources on a machine


I need to create an MSI package which installs both 32-bit and 64-bit .dll files of a firebreath based plugin on a machine.

What I want to achieve is have both resources installed and use the one suitable depending on the Browser (32-bit or 64-bit). For instance, if I have a 64-bit machine with Windows, Chrome 64-bit and Firefox 32-bit; I want to be able to use my plugin from both browsers.

To do so, I am using Visual Studio 2008 and Wix. Up to now I was able to create a 32-bit .dll which is converted in a 32-bit .msi and a 64-bit .dll which fails to be converted to a 64-bit .msi, due to a heat.exe bug. I get something similar to this: https://groups.google.com/forum/#!msg/firebreath-dev/HmGYEgZamUQ/35WJWfB4zegJ

The implementation mentioned before would create 2 different .msi installers (if the 64-bit msi didn't fail). What I would like to do is generate both .dll files (32-bit .dll and 64-bit .dll) and then package them in one single .msi installer which registers both.

Is this possible and if so what would be the best way to do it?


Solution

  • Windows Installer doesn't support this. Strictly speaking an .MSI package is platform specific. There are some hacks and tricks to create a "hybrid" installer. This entails creating a 32bit MSI that subverts MSI checks to install files to 64 bit locations and custom actions to create 64bit registry keys.

    The book answer is to create a 32bit and 64bit MSI and then encapsulate them in a bootstrapper that registeres itself with Programs and Features and installs the 2 MSI's under the covers. In WiX this would be accomplished using Burn to chain the 2 installers together.