【问题标题】:Single installer to install 32bit and 64bit versions of application单个安装程序可安装 32 位和 64 位版本的应用程序
【发布时间】:2015-02-18 09:08:14
【问题描述】:

我需要为 Windows 服务应用程序构建自定义安装程序,以使单个安装程序应具有选择 32 位或 64 位版本的选项(单选按钮),并且应将相同的选定版本安装在客户端机器。

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

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

问候, 哈里什

【问题讨论】:

标签: visual-studio-2010 visual-studio wix


【解决方案1】:

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

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

其中“不同的包”是指两个单独的 MSI 文件。这不是“什么工具可以做到这一点”的问题,因为它是 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。

【讨论】:

    【解决方案2】:

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

    首先,我分别创建了 32 位和 64 位 MSI 安装程序。
    然后我创建了一个 Windows 窗体应用程序,它要求选择版本(32 位或 64 位)并根据选择执行 32 位或 64 位 MSI。
    最后,我为 Windows 窗体应用程序创建了一个简单的安装程序。

    所以最后我得到了一个可用于安装 32 位或 64 位版本的应用程序的安装程序。
    这就是执行最终安装程序时发生的情况 -
    1.最终安装程序在C:\temp\目录下安装win form应用程序并执行win form应用程序。
    2. Win form 应用程序要求选择所需的版本(32 位或 64 位)。
    3.根据选择win form应用程序启动32位或64位MSI并终止。
    4. MSI 启动并执行其操作,最后从系统中卸载 Win 表单应用程序。

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 2015-02-21
      相关资源
      最近更新 更多