用于安装 32 位和 64 位版本应用程序的单个安装程序
Single installer to install 32bit and 64bit versions of application
我需要为 windows 服务应用程序构建自定义安装程序,这样单个安装程序应该可以选择(单选按钮)到 select 32 位或 64 位版本并且相同的 selected 版本应该安装在客户端机器上。
Windows 服务是在 VC++ 的旧版本中构建的,最近使用 VS2010 进行了升级。
正在寻找如何实现的建议。我已经尝试过安装和部署项目以及 Wix。
此致,
哈里斯
您不能那样做,因为 MSI 本身标有其体系结构,因此您需要两个单独的 MSI 文件。
其中 "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 引导程序是不可能的。
我需要为 windows 服务应用程序构建自定义安装程序,这样单个安装程序应该可以选择(单选按钮)到 select 32 位或 64 位版本并且相同的 selected 版本应该安装在客户端机器上。
Windows 服务是在 VC++ 的旧版本中构建的,最近使用 VS2010 进行了升级。
正在寻找如何实现的建议。我已经尝试过安装和部署项目以及 Wix。
此致, 哈里斯
您不能那样做,因为 MSI 本身标有其体系结构,因此您需要两个单独的 MSI 文件。
其中 "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 引导程序是不可能的。