我正在更新现有安装程序,并希望当操作系统在 ARM64 上运行时安装特定的 ARM64 二进制文件。 我正在使用 WIX 3.11(我知道有点旧)来创建安装程序。自定义操作都是用 C++ 编写的。
我已经尝试过:
QueryNativeMachine
,但我不确定如何准确使用它以及如何确保它在计算条件之前执行。该文档也没有真正指定 3.11 是否支持它,或者是否需要 WIX 3.14 或更高版本。GetSystemInfo
和 GetNativeSystemInfo
WinAPI - 即使在 ARM 上运行,它们也会返回 x86。我猜这是因为安装程序本身是作为 x86 WIX 项目构建的,因此可能是模拟运行的。IsWow64Process2
,但这需要我将应用程序支持的最低版本更新到 Windows 10 (#define _WIN32_WINNT 0x0A00
),这是我不想做的事情。我很想获得一些帮助,了解检测当前进程是否在 ARM64 计算机上运行的最佳通用方法,最好使用 WinAPI。 如果
QueryNativeMachine
是安装程序上下文中的最佳选项,我很想获得一些其用法的示例。我在网上找不到任何与此相关的内容。
Windows Installer 不支持多个 arch 包。您应该构建 x86、x64 和 arm64 安装程序,每个安装程序都包含针对该平台编译的二进制文件。您可以为用户提供多个下载或将它们全部包装在引导程序包中(刻录),该程序包有条件地为其运行的平台安装正确的 MSI。引导程序可以从网站动态下载 MSI,或者拥有所有三个自包含的。这完全取决于安装程序有多大以及您想要优化的内容。