Electron 打包后 exe 对应的 asar 解压 / 打包完整流程

仅用作个人学习

Electron 打包后 exe 对应的 asar 解压/打包完整流程

你需要对 Electron 打包生成的 exe 程序中的 asar 归档文件进行解压和重新打包,以下是分步详细操作流程,涵盖环境准备、文件定位、解压、修改、重新打包全环节。

一、前置环境准备:安装 asar 工具

asar 是 Electron 官方提供的归档/解压工具,需通过 npm 全局安装,前提是你的电脑已安装 Node.js(自带 npm 包管理器)。

  1. 打开命令行工具(Windows 为 CMD 或 PowerShell);
  2. 执行全局安装命令:
bash 复制代码
npm install -g asar
  1. 验证安装成功:执行 asar -V(大写V),若输出版本号则说明安装完成。

二、定位 asar 文件(关键步骤)

Electron 打包后的 exe 并非直接包含源码,exe 本质是一个启动容器,asar 文件位于 exe 同级目录的 resources 文件夹中:

  1. 找到你的 Electron 打包产物(通常是一个 xxx-win32-x64 文件夹,xxx 为你的应用名称);
  2. 进入该文件夹,找到 resources 子文件夹 ,打开后即可看到核心归档文件 app.asar(这是默认名称,若你打包时自定义了名称,对应查找即可)。

三、asar 文件解压流程

解压的核心是 asar extract 命令,步骤如下:

  1. 命令行切换到 resources 文件夹路径(示例:假设 resources 路径为 D:\my-electron-app\win32-x64\resources):
bash 复制代码
cd D:\my-electron-app\win32-x64\resources
  1. 执行解压命令,将 app.asar 解压到指定文件夹(示例:解压到 app_unpacked 文件夹):
bash 复制代码
# 语法:asar extract 源asar文件 目标解压文件夹
asar extract app.asar app_unpacked
  1. 执行完成后,resources 文件夹下会生成 app_unpacked 文件夹,里面就是解压后的所有应用源码(html、js、css、静态资源等),你可以按需修改其中的文件。

四、修改文件后:asar 重新打包流程

修改完 app_unpacked 中的文件后,需要将其重新打包为 asar 文件,核心是 asar pack 命令,步骤如下:

  1. 保持命令行在 resources 文件夹路径下;
  2. 执行打包命令,将解压后的文件夹重新打包为 app.asar(建议先备份原始 app.asar,避免修改出错无法恢复):
  • 第一步(可选但推荐):备份原始 asar 文件:
bash 复制代码
# Windows 环境备份命令(重命名为 app_backup.asar)
ren app.asar app_backup.asar
  • 第二步:执行打包命令:
bash 复制代码
# 语法:asar pack 解压后的源文件夹 新生成的asar文件名称
asar pack app_unpacked app.asar
  1. 执行完成后,resources 文件夹下会生成新的 app.asar 文件,该文件已包含你的修改内容。

五、替换后验证

  1. 直接运行原来的 exe 程序,即可加载新的 app.asar 文件,验证你的修改是否生效;
  2. 若运行异常,可删除新生成的 app.asar,将 app_backup.asar 重命名回 app.asar,恢复到原始状态排查问题。

六、注意事项

  1. 目录结构一致性:重新打包时,务必保证解压后的文件夹(如 app_unpacked)内部目录结构与原始 asar 一致,否则 exe 可能无法识别资源;
  2. 权限问题:Windows 环境下若提示权限不足,可右键命令行工具,选择「以管理员身份运行」后再执行命令;
  3. 加密/混淆情况:若你的 Electron 应用打包时对 asar 进行了加密或代码混淆,直接解压后可能无法正常修改或运行,需先解除加密/混淆。
相关推荐
前端小L2 小时前
贪心算法专题(十四):万流归宗——「合并区间」
javascript·算法·贪心算法
柒@宝儿姐2 小时前
vue3中使用element-plus的el-scrollbar实现自动滚动(横向/纵横滚动)
前端·javascript·vue.js
程序员爱钓鱼2 小时前
Node.js 编程实战:模板引擎与静态资源
前端·后端·node.js
Geoffwo2 小时前
Electron打包的软件如何使用浏览器插件
前端·javascript·electron
Sui_Network2 小时前
Sui 2025→2026 直播回顾中文版
大数据·前端·人工智能·深度学习·区块链
打小就很皮...2 小时前
网页包装为桌面应用(electron版)
前端·electron
用户91743965393 小时前
基于SqlSugar开发框架的基础上快速开发H5端的移动应用
前端·负载均衡
Yesterday不想说话3 小时前
Promise的总结
前端
C_心欲无痕3 小时前
nodejs - npm和package.json文件解析
前端·npm·json