Create an msi package that installs 32-bit and 64-bit resources on the machine

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

What I want to achieve is to install both resources and use one of them appropriate depending on the browser (32-bit or 64-bit). For example, if I have a 64-bit Windows machine, 64-bit and 64-bit Chrome, 32-bit Firefox; I want to be able to use my plugin from both browsers.

For this, I use Visual Studio 2008 and Wix. So far I have managed to create a 32-bit .dll that converts to 32-bit .msi and 64-bit .dll that cannot be converted to 64-bit .msi due to heat.exe error. I am getting something similar to this: https://groups.google.com/forum/#!msg/firebreath-dev/HmGYEgZamUQ/35WJWfB4zegJ

The previously mentioned implementation created 2 different .msi installers (assuming 64 bit msi did not interrupt). I would like to create .dll files (32-bit .dll and 64-bit .dll) and then package them into a single .msi installer that registers both.

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

+3


source to share


2 answers


Windows Installer does not support this. Strictly speaking, the .MSI package is platform specific. There are several hacks and tricks for creating a "hybrid" installer. This entails creating a 32-bit MSI that undermines MSI checks to install files to 64-bit locations and custom actions to create 64-bit registry keys.



The book's answer is to create a 32-bit and 64-bit MSI and then encapsulate them in a bootloader that registers with programs and components and installs 2 MSIs under the covers. On WiX, this will be achieved with Burn to merge 2 installers together.

+7


source


what I would be doing in a scenario like this is focusing mainly on the 64 bit installer rather than creating another installer and bootstrapping. Below is my approach to the same, please point me out if I'm wrong.

As Koka wants the installer to set the settings for the browser plugin and use the browser according to the platform. In that case, consider 1> OS 32 bit, so there is no 64 bit browser option, so just install the installer with settings for a 32 bit browser.
2> Now os is 64 bit. maybe a 32/64 bit browser, so create an installer with different components for a 32 bit and 64 bit 32 bit component that will set things up for a 32 bit browser and the same with a 64 bit component. And leave everything else in the OS as a 32 bit browser will always use the firebreath 32 bit plugin.



I believe Regsvr will install the plugin for all available browsers, but it is considered bad practice in an installer. This is not a complete proof, as during the installation of the browser plugin there are many things that need to be given to the developer when creating the installer.

0


source







All Articles