Installation 基于CPU体系结构(x86 32位、x64 64位等)选择MSI的安装程序

Installation 基于CPU体系结构(x86 32位、x64 64位等)选择MSI的安装程序,installation,32bit-64bit,inno-setup,nsis,x86-64,Installation,32bit 64bit,Inno Setup,Nsis,X86 64,我有一个安装程序(VisualStudio安装项目),可以安装。问题是有两个DIFxApp合并模块——一个用于x86,一个用于x64。如果我同时引用这两个版本,那么安装只在64位机器上运行,而仅引用x86版本允许我在32位机器上安装 似乎唯一的解决方案是创建两个MSI(一个用于x86,一个用于x64),每个MSI都引用正确的合并模块。我的问题是,我应该如何创建一个安装程序,根据目标机器的处理器选择要安装的MSI 我已经做了一点,所以这可能是最容易走的路线。 其他可能性包括和 类似问题(但答案不充

我有一个安装程序(VisualStudio安装项目),可以安装。问题是有两个DIFxApp合并模块——一个用于x86,一个用于x64。如果我同时引用这两个版本,那么安装只在64位机器上运行,而仅引用x86版本允许我在32位机器上安装

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

我已经做了一点,所以这可能是最容易走的路线。 其他可能性包括和

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


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

如果您决定使用NSIS:

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

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


我在这里举了一个例子:

为什么不让用户选择正确的MSI?在Windows世界中,32位和64位版本的安装程序是很常见的。@0xA3:因为客户需要一个统一的安装程序。此外,我觉得最好是尽可能地自动化所有可能的事情,这样用户就可以尽可能少地安装它。是的,这是一个有效的解决方案,但这是一个已经被其他人解决的问题,我宁愿不要重新发明轮子。在这种情况下,我推荐inno安装,非常容易使用。我个人认为inno安装比nsis简单。我现在就安装并查看了它。我很愿意尝试,但我不知道从哪里开始。对于我最初的问题,一个好的答案应该是明确地根据CPU选择一个或另一个文件。重用它们比从头开始编写更容易。文档也很清楚。这个论坛帖子可能会解决您的问题:IIRC,包含该信息的变量称为“is64biinstallmode”,因为用户可以通过命令行选择在64位上安装32位。