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 进行了加密或代码混淆,直接解压后可能无法正常修改或运行,需先解除加密/混淆。
相关推荐
摘星编程11 分钟前
OpenHarmony环境下React Native:Sensors摇一摇换图
javascript·react native·react.js
Dontla16 分钟前
打开网站时弹出Accept Cookies(接受Cookie)提示是什么意思?(数据保护法规,欧盟GDPR)
前端·数据库
2501_9445264235 分钟前
Flutter for OpenHarmony 万能游戏库App实战 - 关于页面实现
android·java·开发语言·javascript·python·flutter·游戏
咸鱼2.01 小时前
【java入门到放弃】VUE部分知识点
java·javascript·vue.js
weixin_489690021 小时前
MicroSIP自定义web拨打协议
服务器·前端·windows
幻云20101 小时前
Python机器学习:筑基与实践
前端·人工智能·python
web小白成长日记1 小时前
Vue3中如何优雅实现支持多绑定变量和修饰符的双向绑定组件?姜姜好
前端·javascript·vue.js
晴天飛 雪1 小时前
Spring Boot 接口耗时统计
前端·windows·spring boot
0思必得01 小时前
[Web自动化] Selenium模拟用户的常见操作
前端·python·selenium·自动化
十六年开源服务商1 小时前
WordPress在线聊天系统推荐
大数据·javascript·html