WinAPI / WIX - 如何检测 MSI 安装程序是否在 ARM64 或 x86 上运行?

问题描述 投票:0回答:1

我正在更新现有安装程序,并希望当操作系统在 ARM64 上运行时安装特定的 ARM64 二进制文件。 我正在使用 WIX 3.11(我知道有点旧)来创建安装程序。自定义操作都是用 C++ 编写的。

我已经尝试过:

  • 使用 WiX 中的
    QueryNativeMachine
    ,但我不确定如何准确使用它以及如何确保它在计算条件之前执行。该文档也没有真正指定 3.11 是否支持它,或者是否需要 WIX 3.14 或更高版本。
  • 在自定义安装程序操作中使用
    GetSystemInfo
    GetNativeSystemInfo
    WinAPI - 即使在 ARM 上运行,它们也会返回 x86。我猜这是因为安装程序本身是作为 x86 WIX 项目构建的,因此可能是模拟运行的。
  • 目前我正在尝试使用
    IsWow64Process2
    ,但这需要我将应用程序支持的最低版本更新到 Windows 10 (
    #define _WIN32_WINNT 0x0A00
    ),这是我不想做的事情。

我很想获得一些帮助,了解检测当前进程是否在 ARM64 计算机上运行的最佳通用方法,最好使用 WinAPI。 如果

QueryNativeMachine
是安装程序上下文中的最佳选项,我很想获得一些其用法的示例。我在网上找不到任何与此相关的内容。

winapi wix windows-installer
1个回答
0
投票

Windows Installer 不支持多个 arch 包。您应该构建 x86、x64 和 arm64 安装程序,每个安装程序都包含针对该平台编译的二进制文件。您可以为用户提供多个下载或将它们全部包装在引导程序包中(刻录),该程序包有条件地为其运行的平台安装正确的 MSI。引导程序可以从网站动态下载 MSI,或者拥有所有三个自包含的。这完全取决于安装程序有多大以及您想要优化的内容。

© www.soinside.com 2019 - 2024. All rights reserved.