Windows On ARM 原生应用少?你可以试试这些改造方法
内容提要
Windows on ARM 可通过转译运行x86应用,但性能有损耗。本文介绍两种将常用应用改造为ARM64原生运行的方法:使用Pake工具将网页打包为原生客户端,以及替换Electron应用的ARM64运行时外壳并移植app.asar,从而免转译流畅运行。
延伸解读
识别 Electron 应用的技巧
要判断一个应用是否基于 Electron,可以检查其安装目录:若存在 locales 文件夹、大量 .pak 文件、version 文件(或 LICENSE.electron.txt)以及 resources 目录下的 app.asar,则基本可判定为 Electron 应用。这类应用因业务代码为跨平台的 JavaScript/HTML/CSS,仅外壳为 x64 指令,故可通过替换 ARM64 版外壳实现原生运行。
改造的适用条件与限制
并非所有 Electron 应用都能简单改造。若应用依赖特定架构的 C++ 原生扩展(Native Addons),则无法通过替换外壳实现原生运行。此外,改造过程需要手动下载对应版本的 ARM64 运行时,并处理图标和版本信息,对非技术用户有一定门槛。建议先确认应用无原生依赖,再尝试操作。
Pake 打包的注意事项
使用 Pake 将网页打包为 ARM64 原生客户端时,官方云端工作流不支持 ARM64,需在本地安装 Node.js、Rust 工具链和 LLVM 环境,并手动编译。生成的安装包基于 Tauri,利用系统 WebView2 渲染,内存占用低,但需注意网页需支持响应式设计,且打包后功能受限于网页本身。
Q&A
Windows on ARM 设备上运行 x86 应用有什么缺点?
通过转译运行 x86 应用会带来额外的指令集转换开销,导致 CPU 与内存占用偏高,性能不如原生运行。
如何将网页打包成 Windows ARM64 原生应用?
可以使用开源工具 Pake,在本地安装 Node.js、Rust 工具链和 LLVM 后,通过命令行执行 `pake <网址> --name <应用名>` 即可编译生成 ARM64 原生安装包。
Pake 打包的应用有什么优势?
Pake 基于 Tauri 架构,利用系统内置的 WebView2 渲染,安装包小、内存占用低,且能在 ARM 架构下免转译原生运行。
如何判断一个应用是否是 Electron 应用?
可以查看应用安装目录,如果根目录包含 locales 文件夹和大量 .pak 文件,有记录 Electron 版本号的 version 文件,且 resources 目录下有 app.asar 文件,则基本可判定为 Electron 应用。
如何将 Electron 应用改造成 ARM64 原生版本?
首先确认应用是 Electron 应用,然后获取其使用的 Electron 版本,下载对应的 ARM64 预编译包,将原应用的 app.asar 复制到新外壳的 resources 目录,并将 electron.exe 重命名为原程序名,最后用 Resource Hacker 替换图标和版本信息。
为什么 Electron 应用可以低成本改造成 ARM64 原生?
因为 Electron 应用由运行时外壳(Chromium 和 Node.js)和业务包(app.asar)组成,app.asar 内是跨平台的 JavaScript/HTML/CSS 代码,只要没有依赖特定架构的 C++ 原生扩展,只需替换 ARM64 版本的 Electron 外壳即可。