创建一个msi软件包,在计算机上安装32位和64位资源

时间:2014-12-15 09:20:31

标签: wix windows-installer 32bit-64bit firebreath

我需要创建一个MSI包,它可以在一台机器上安装基于firebreath的插件的32位和64位.dll文件。

我想要实现的是安装两个资源并根据浏览器(32位或64位)使用合适的资源。例如,如果我有64位的Windows机器,Chrome 64位和Firefox 32位机器;我希望能够从两个浏览器中使用我的插件。

为此,我使用的是Visual Studio 2008和Wix。 到目前为止,我能够创建一个32位.dll,它被转换为32位.msi和64位.dll,由于heat.exe而无法转换为64位.msi错误。我得到类似的东西:https://groups.google.com/forum/#!msg/firebreath-dev/HmGYEgZamUQ/35WJWfB4zegJ

之前提到的实现将创建2个不同的.msi安装程序(如果64位msi没有失败)。我想要做的是生成两个.dll文件(32位.dll和64位.dll),然后将它们打包在一个单独的.msi安装程序中,它们同时注册这两个文件。

这是可能的,如果是这样,最好的方法是什么?

2 个答案:

答案 0 :(得分:7)

Windows Installer不支持此功能。严格来说,.MSI包是特定于平台的。有一些黑客和技巧来创造一个"混合"安装程序。这需要创建一个32位MSI,它可以破坏MSI检查以将文件安装到64位位置,并创建自定义操作来创建64位注册表项。

本书的答案是创建一个32位和64位MSI,然后将它们封装在一个引导程序中,该引导程序通过程序和功能进行注册,并安装2个MSI。在WiX中,这将通过Burn将2个安装程序链接在一起来完成。

答案 1 :(得分:0)

我将在这种情况下做的是主要关注64位安装程序,而不是创建不同的安装程序并引导它。
以下是我的方法,如果我错了,请指出我。

因为Koka想要安装程序,它将为浏览器插件设置并根据平台使用浏览器。在这种情况下考虑
1 GT;操作系统是32位,所以没有64位broswer的机会,所以保持安装简单,设置为32位broswer的东西。
2 - ;现在os是64位。机会是32/64位浏览器,所以使用32位和64位的不同组件创建安装程序,32位组件将为32位broswer和64位组件设置相同的东西。并将剩余的东西留给操作系统作为32位浏览器将始终使用32位firebreath插件。

我相信 Regsvr 会为所有可用浏览器安装插件,但在安装程序中会被视为bad practice。 这不是一个完整的证据,因为安装浏览器插件时有很多事情需要开发人员在创建安装程序时注意。