如何根据目标机器(32 位或 64 位)有条件地使用 WiX 安装文件?

Posted

技术标签:

【中文标题】如何根据目标机器(32 位或 64 位)有条件地使用 WiX 安装文件?【英文标题】:How do I conditionally install a file with WiX based on the target machine (32bit or 64bit)? 【发布时间】:2010-10-18 08:22:11 【问题描述】:

我有一个有 32 位版本和 64 位版本的文件。如果我在 32 位机器上安装我的应用程序,我希望安装 32 位版本的文件。同样,如果安装在 64 位机器上运行,则应安装 64 位版本。如何使用 WiX 检查安装程序在哪种类型的机器上运行?

请不要单行回答。我正在寻找特定的 WiX 标签以及将它们放在我的 WiX 脚本中的什么位置。

【问题讨论】:

【参考方案1】:

您可以可能使用条件只做两个独立的组件

 VersionNT64

 Not VersionNT64

但是正确的方法是为 32 位和 64 位操作系统编译单独的安装程序,并且 64 位组件也应该这样标记(使用Win64="yes") - 我不知道是否可以标记 Windows 安装程序针对英特尔和 x64 的软件包。只有一次我使用 NSIS 完成了混合架构安装,我所有的 WiX 安装程序都有针对每个架构的单独安装程序。

【讨论】:

【参考方案2】:

这样做的正确方法是编译两个设置,一个用于 32 (x86),一个用于 64 (amd64)。然后将这两个 msi 打包到一个 msi 中,并在运行时运行相应的 msi。

【讨论】:

【参考方案3】:

您可以使用环境或预处理器变量创建一个基础 wxs 文件,并在编译之前填写所需的属性。另一种选择是在构建之前运行一个脚本,该脚本在文件中包含用于特定安装的不同 GUID。 简而言之,我认为没有一种简单的方法可以为不同的架构构建安装程序,因此您必须使用额外的实用程序。

【讨论】:

以上是关于如何根据目标机器(32 位或 64 位)有条件地使用 WiX 安装文件?的主要内容,如果未能解决你的问题,请参考以下文章

安装的jvm是64位或32位[重复]

对构建 32 位或 64 位感到困惑

MS Access 32 位或 64 位

在 64 位 Windows 上安装 32 位或 64 位应用程序有啥区别?

检测 32 位或 64 位 Windows

检测32位或64位Windows