【问题标题】:Installer which chooses the MSI based on the CPU architecture (x86 32-bit, x64 64-bit, etc)根据 CPU 架构(x86 32 位、x64 64 位等)选择 MSI 的安装程序
【发布时间】:2011-05-06 21:35:13
【问题描述】:

我有一个 uses DIFxApp and an Orca transform to install drivers 的安装程序(Visual Studio 安装项目)。问题是有两个 DIFxApp 合并模块 - 一个用于 x86,一个用于 x64。如果我同时引用它们,安装只能在 64 位机器上运行,而仅引用 x86 版本允许我在 32 位机器上安装。

似乎唯一的解决方案是创建两个 MSI(一个用于 x86,一个用于 x64),每个都引用正确的合并模块。我的问题是我应该如何创建一个安装程序,根据目标机器的处理器选择要安装的 MSI?

我曾与NSIS 合作过一点点,所以走这条路可能最容易。 其他可能性是Inno-SetupdotNetInstaller

类似的问题(但答案不充分):

【问题讨论】:

  • 为什么不让用户选择合适的微星呢?在 Windows 世界中,为 32 位和 64 位版本提供单独的安装程序是很常见的。
  • @0xA3:因为客户想要一个统一的安装程序。此外,我觉得最好将所有可能的事情自动化,这样用户就可以尽可能少地安装它。

标签: installation 32bit-64bit inno-setup nsis x86-64


【解决方案1】:

如果您决定选择 NSIS:

!include "x64.nsh"
${If} ${RunningX64}
   MessageBox MB_OK "running on x64"
${Else}
   MessageBox MB_OK "running on x86"
${EndIf}

【讨论】:

    【解决方案2】:

    您可以使用自定义操作来检测操作系统,然后调用正确的安装程序。

    我在这里举了一个例子:single-msi-to-install-correct-32-or-64-bit-c-application

    【讨论】:

      【解决方案3】:

      如何制作一个检测操作系统类型的小程序(启动器)(64 0r 32 位,应该很容易)。然后小程序根据检测结果启动正确的安装程序。该程序不应有任何窗口,并且具有与安装程序相同的图标。只需给客户所有三个文件,installer.exe(程序)、inst32.msi 和 inst64.msi。如果这对您的客户来说太过分了,那么只需将它们压缩成一个自解压的 zip,它会自动启动 installer.exe。

      【讨论】:

      • 是的,这是一个有效的解决方案,但这是别人已经解决的问题,我宁愿不重新发明轮子。
      • 在这种情况下,我推荐 inno 设置,非常易于使用 jrsoftware.org/isinfo.php 。我个人认为 inno 设置比 nsis 更容易。
      • 我已安装并正在查看 IS。我愿意尝试,但我不知道从哪里开始。我最初的问题的一个很好的答案是明确地根据 CPU 选择一个或另一个文件。
      • Inno setup 有许多可以重复使用的模板 scipts。重用它们比从头开始编写更容易。 IMO 的文档也很清楚。此论坛帖子可能会解决您的问题:vbforums.com/showthread.php?t=596012
      • IIRC,包含该信息的变量称为“Is64BitInstallMode”,因为用户可以通过命令行选择在 64Bit 上安装 32Bit。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多