☰
WSL 在 ARM64 Windows 上构建时 WiX 工具集缺少 x64 .NET 6.0 运行时怎么解决?
2026/10/5 20:25:43 网站建设 项目流程

WSL 在 ARM64 Windows 上构建时 WiX 工具集缺少 x64 .NET 6.0 运行时怎么解决?

【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL

在 ARM64 Windows 机器上构建 WSL 时,构建流程需要调用 WiX 工具集(wix.exe)来打安装包。wix.exe是 x64 二进制,它需要x64 的 .NET 6.0 运行时才能工作;机器上只有 ARM64 的 .NET 运行时是不够的。遇到这个情况时,按本文操作:安装 x64 .NET 6.0 运行时,并设置DOTNET_ROOT_X64让运行时可被发现,然后重新执行 ARM64 构建即可。以下内容依据仓库文档 Building WSL 整理。

先确认是不是这个问题

出现该问题的前提和判断依据(来自 dev-loop.md 的 “ARM64 development” 一节):

  • 你在ARM64 Windows上构建 WSL(例如使用cmake . -A arm64生成 ARM64 包);
  • 构建过程由wix.exe执行打包,而wix.exe是 x64 二进制;
  • 机器上未安装 x64 .NET 6.0 运行时,或者设置了 x64 运行时但没有配置DOTNET_ROOT_X64导致运行时不可发现。

如果是在 x64 Windows 上构建,不属于本文场景。

准备条件

修复本身不改变构建前置条件,先按 dev-loop.md 的要求确认这些依赖已就位:

  • CMake >= 3.25(可用winget install Kitware.CMake安装)
  • Visual Studio 2022 及其所需组件(可用 VS Installer 导入.vsconfig配置)
  • Windows 设置中启用 Developer Mode,或者以管理员权限运行构建(符号链接支持需要)

这些前置条件也可以用一条脚本自动安装(该脚本通过 WinGet Configuration 安装 Developer Mode、CMake、Visual Studio 2022 及.vsconfig中要求的组件):

tools\setup-dev-env.ps1

安装 x64 .NET 6.0 运行时

在 PowerShell 中执行以下两条命令。先说明副作用:第一条命令从https://dot.net/v1/dotnet-install.ps1下载官方 dotnet-install 脚本到临时目录,属于网络下载;第二条命令执行该脚本,把 x64 .NET 6.0 运行时安装到C:\Program Files\dotnet\x64,会向系统目录写入文件。

# Download the official dotnet-install script Invoke-WebRequest -Uri "https://dot.net/v1/dotnet-install.ps1" -OutFile "$env:TEMP\dotnet-install.ps1" # Install the x64 .NET 6.0 runtime powershell -ExecutionPolicy Bypass -File "$env:TEMP\dotnet-install.ps1" -Channel 6.0 -Runtime dotnet -Architecture x64 -InstallDir "C:\Program Files\dotnet\x64"

其中-Channel 6.0指定 .NET 6.0 版本线,-Runtime dotnet表示安装 .NET 运行时,-Architecture x64指定 x64 架构,-InstallDir指定安装目录。

设置 DOTNET_ROOT_X64 让运行时可被发现

安装完成后,设置DOTNET_ROOT_X64环境变量指向运行时安装目录。该命令会修改当前会话或当前用户的环境变量:

# Set for the current session $env:DOTNET_ROOT_X64 = "C:\Program Files\dotnet\x64" # Set permanently for your user [System.Environment]::SetEnvironmentVariable("DOTNET_ROOT_X64", "C:\Program Files\dotnet\x64", "User")

注意两点:

  • DOTNET_ROOT_X64的值必须与上一步-InstallDir使用的目录一致(上例中均为C:\Program Files\dotnet\x64)。如果你自定义了安装目录,两处都要改成同一目录。
  • 设置后可能需要重启 VS Code 或打开一个新终端,环境变量才会生效。

重新构建并验证

回到 WSL 仓库根目录,重新配置并构建 ARM64 包:

cmake . -A arm64 cmake --build .

也可以打开cmake .生成的wsl.sln,在 Visual Studio 中构建。构建完成后按以下方式验证:

  1. 检查安装包是否生成:构建完成后 WSL 的 MSI 位于bin\<platform>\<target>\wsl.msi,在 ARM64 机器上 platform 段为arm64(文档中测试示例显示 target 段形如debug,例如bin\x64\debug\test.bat)。该文件生成说明 WiX 打包环节已经正常工作。
  2. 安装验证:直接安装该 MSI,或运行powershell tools\deploy\deploy-to-host.ps1部署到本机。

限制与补充

  • -DCMAKE_BUILD_TYPE=Release用于 Release 构建,需与cmake --build . --config Release配合使用;
  • 如果需要构建 bundle msix 包(-DBUILD_BUNDLE=TRUE),文档要求先完成 ARM64 构建,即先跑通本文这条路径;
  • 文档没有给出该故障的具体报错文本,判断依据是 “wix.exe为 x64 二进制、需要 x64 .NET 6.0 运行时、仅 ARM64 运行时不够” 这一说明;如果你确认运行时已安装到C:\Program Files\dotnet\x64且DOTNET_ROOT_X64已在新终端中生效,问题仍未解决,则超出了文档覆盖的范围,需要进一步自行排查。

【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询