Skip to content

【已审核】feat(build): 增加 Windows ARM64 打包支持#1146

Closed
climashscape wants to merge 1 commit into
proma-ai:mainfrom
climashscape:feat/win-arm64-support
Closed

【已审核】feat(build): 增加 Windows ARM64 打包支持#1146
climashscape wants to merge 1 commit into
proma-ai:mainfrom
climashscape:feat/win-arm64-support

Conversation

@climashscape

@climashscape climashscape commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

概述

Proma 是纯 JS/TS/WASM 项目(零 C++ native addon),
Electron 39.5.1 原生支持 ARM64,SDK 也提供 win32-arm64
子包(@anthropic-ai/claude-agent-sdk-win32-arm64),
具备良好的 Windows ARM64 移植条件。

本 PR 添加基础的 win-arm64 打包支持:

  • electron-builder 配置增加 arm64 架构目标(NSIS 安装器,
    与 x64 一致的自动更新和安装体验)
  • 打包脚本支持 --arm64 / --x64 参数,从 x64 主机交叉编译 arm64
  • Bun 二进制下载增加 win32-arm64 平台映射
  • 运行时白名单同步增加 win32-arm64,避免 ARM64 上 Bun 检测抛异常

改动

文件 改动
apps/electron/electron-builder.yml win 目标 arm64 从 portable+zip 改为 NSIS(与 x64 一致)
apps/electron/scripts/dist.ts 新增 --arm64/--x64/--skip-cli 参数;支持跨平台构建;增加冲突参数检测和警告
apps/electron/scripts/download-bun.ts 映射表加 win32-arm64 → windows-aarch64
apps/electron/src/main/lib/bun-finder.ts 新增 Windows ARM64 原生架构检测;supportedCombinations 加 win32-arm64
packages/shared/src/types/runtime.ts PlatformArch 类型加 win32-arm64
packages/shared/package.json bump version 0.1.41 → 0.1.42

自动更新说明

electron-updater 在 Windows 上统一读取 latest.yml(不存在架构
后缀差异),x64 和 arm64 的 NSIS 安装包均写入同一个 latest.yml。
客户端运行时按 process.arch 自动匹配正确的安装包下载安装。
因此 arm64 和 x64 的自动更新体验完全一致。

测试

  • TypeCheck: 全部 6 包通过
  • BDD 自审: 已通过(高/中风险已修复)
  • 实际硬件验证: 需要在 Snapdragon X Elite/Plus 或其他 Win on ARM
    设备上运行确认

注意事项:

  • bun build --compile 不支持交叉编译,跨架构构建时跳过 CLI 编译,
    ARM64 构建不含 proma CLI binary(可用系统安装的 bun 替代)
  • 标准 EV 签名证书即可签名 ARM64 产物,无需 ARM64 专用证书

紧急度

@climashscape
climashscape force-pushed the feat/win-arm64-support branch from 63eec24 to 63491aa Compare July 13, 2026 12:54
- electron-builder.yml: 添加 arm64 到 Windows target arch 列表

- scripts/dist.ts: 新增 --arm64/--x64 参数指定目标架构,支持跨平台构建(如 macOS 构建 Windows ARM64);新增 --skip-cli 参数跳过 CLI 编译(避免 bun build --compile 交叉编译问题);补充完整使用文档

- scripts/download-bun.ts: 新增 win32-arm64 平台支持(platform-arch: windows-aarch64)

- apps/electron/src/main/lib/bun-finder.ts: 新增 Windows ARM64 原生架构检测(通过 PROCESSOR_Architecture 环境变量识别模拟模式),确保在 x64 模拟下选对 vendor/bun/win32-x64 或 win32-arm64 路径

- packages/shared: PlatformArch 类型新增 win32-arm64,版本号 0.1.41→0.1.42
@climashscape
climashscape force-pushed the feat/win-arm64-support branch from 63491aa to 841e01f Compare July 15, 2026 02:49
@climashscape
climashscape marked this pull request as ready for review July 15, 2026 02:51
@climashscape climashscape changed the title 【等待审核】feat(build): 增加 Windows ARM64 打包支持 【已审核】feat(build): 增加 Windows ARM64 打包支持 Jul 15, 2026
@ErlichLiu

Copy link
Copy Markdown
Collaborator

感谢这个 PR 先把 Windows ARM64 的可行方向梳理出来。这里的判断是:方向是对的,但当前阶段我们先不合并这条实现。

主要原因:

  • 目前 Proma 的 Windows 用户量还比较小,大部分仍是 Intel/x64 用户,Windows ARM64 不是近期必须发布的能力。
  • 我们现在缺少 Windows ARM 真机,没法完成安装、Agent SDK、Proma CLI、运行时探测和自动更新的端到端验收。
  • Windows ARM64 不能只看 electron-builder 的 arm64 arch;Proma 安装包还包含 Agent SDK native binary、proma CLI 和运行时检测逻辑。正式包需要确保这些二进制都来自目标平台/架构,避免交叉构建时把宿主平台 CLI 混进安装包。

我基于这个方向单独整理了一个更完整、但默认不启用的未来方案:#1153

#1153 的取舍是:

  • Windows ARM64 release job 默认关闭,避免影响当前 x64 Windows 发布。
  • 未来有 Windows ARM 设备或可用 runner 后,再通过 repository variable 启用。
  • 正式 ARM64 包要求在 Windows ARM64 runner 上构建;交叉打包只能作为实验路径,并且必须显式跳过 CLI,防止错误平台二进制进入安装包。

所以这个 PR 可以作为问题背景和早期探索保留参考,但我们后续会以 #1153 这类“发布链路可控、默认不影响当前用户”的方案继续推进。

@ErlichLiu ErlichLiu closed this Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants