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 进行了加密或代码混淆,直接解压后可能无法正常修改或运行,需先解除加密/混淆。
相关推荐
子兮曰19 小时前
OpenClaw入门:从零开始搭建你的私有化AI助手
前端·架构·github
吴仰晖20 小时前
使用github copliot chat的源码学习之Chromium Compositor
前端
1024小神20 小时前
github发布pages的几种状态记录
前端
不像程序员的程序媛1 天前
Nginx日志切分
服务器·前端·nginx
Daniel李华1 天前
echarts使用案例
android·javascript·echarts
北原_春希1 天前
如何在Vue3项目中引入并使用Echarts图表
前端·javascript·echarts
JY-HPS1 天前
echarts天气折线图
javascript·vue.js·echarts
尽意啊1 天前
echarts树图动态添加子节点
前端·javascript·echarts
吃面必吃蒜1 天前
echarts 极坐标柱状图 如何定义柱子颜色
前端·javascript·echarts
O_oStayPositive1 天前
Vue3使用ECharts
前端·javascript·echarts