用于安装 32 位和 64 位版本应用程序的单个安装程序

Single installer to install 32bit and 64bit versions of application

我需要为 windows 服务应用程序构建自定义安装程序,这样单个安装程序应该可以选择(单选按钮)到 select 32 位或 64 位版本并且相同的 selected 版本应该安装在客户端机器上。

Windows 服务是在 VC++ 的旧版本中构建的,最近使用 VS2010 进行了升级。

正在寻找如何实现的建议。我已经尝试过安装和部署项目以及 Wix。

此致, 哈里斯

您不能那样做,因为 MSI 本身标有其体系结构,因此您需要两个单独的 MSI 文件。

http://blogs.msdn.com/b/heaths/archive/2008/01/15/different-packages-are-required-for-different-processor-architectures.aspx

其中 "different packages" 表示两个单独的 MSI 文件。这不是 "what tool can do this" 问题,因为这是 MSI 文件的工作方式。在 64 位系统上,您安装包含 32 位和 64 位组件的 MSI,而在 x86 上,MSI 必须仅包含 32 位组件:

https://msdn.microsoft.com/en-us/library/aa367451(v=vs.85).aspx

所以你只需要在64位系统上安装一个MSI。

在 WiX 中,您可以从共同来源构建它们:

http://blogs.msdn.com/b/astebner/archive/2007/08/09/4317654.aspx One MSI for 32-bit and 64-bit http://alekdavis.blogspot.com/2011/05/build-32-and-64-bit-installers-using.html

我认为 WiX 有一个引导程序,可以为系统架构选择正确的 MSI。

我没有找到任何合适的方法来做到这一点,但在不同论坛的帮助下,经过一些头脑风暴,我能够构建单个安装程序,它可以帮助创建 32 位或 64 位安装程序。

首先我分别创建了 32 位和 64 位 MSI 安装程序。
然后我创建了一个 windows 表单应用程序,它询问 select 版本(32 位或 64 位)并基于 selection 它执行 32 位或 64 位 MSI。
最后,我为 windows 表单应用程序创建了一个简单的安装程序。

所以最后我得到了一个安装程序,可用于安装 32 位或64 位版本的应用程序。

这是执行最终安装程序时发生的情况 -
1.最终安装程序在C:\temp\目录下安装win form应用程序,并执行win form应用程序。
2. Win 表单应用程序要求 select 所需的版本(32 位或 64 位)。
3. 基于 selection win form 应用程序启动 32 位或 64 位 MSI 并终止。
4. MSI 启动并执行其操作,最后从系统中卸载 Win 窗体应用程序。

您将不得不对其进行多次测试,并根据您的要求处理一些添加场景。希望这对其他人有帮助。

注意:我不得不使用这种方法而不是 Wix 引导程序的原因是因为有两个要求 -
1. 客户希望获得选择安装哪个版本(32 位/64 位)的选项,而不管他们的系统架构如何。这意味着他们想要选择在 64 位机器上使用 32 位应用程序,如果他们愿意的话。
2. 他们还只寻找一个安装程序,这意味着一个安装程序应该可以在 32 位和 64 位机器上运行,而使用 Wix 引导程序是不可能的。