打包和解包要修补的 Electron Native 应用程序的 node_modules

Posted

技术标签:

【中文标题】打包和解包要修补的 Electron Native 应用程序的 node_modules【英文标题】:Pack & unpack node_modules of an Electron Native application to be patched 【发布时间】:2021-01-09 14:35:03 【问题描述】:

首先,我正在使用 electron-buildernpmnpx 生成一个电子本机应用程序。 正在执行下一个命令/步骤以编译和生成电子本机应用程序:

    npm run build -- --prod --build-optimizer(编译应用) npx electron-builder build --windows(生成电子窗口应用)

后来,我获得了一个myApp 文件夹,其中包含:

/win-unpacked
electron-builder-effective-config.yaml
myApp.exe

我的应用程序使用 node_modules 文件夹,其中包含我的应用程序中使用的所有节点依赖项。

我的问题是:有什么方法可以解压原生应用程序或类似应用程序并修补 node_modules 中的新更改?

在进行调查后,我发现节点依赖项打包在系统缓存中的 app.asar 文件中,该文件包含一个 dist 文件夹和一些 .js 文件。

在开发者工具中:

内部app.asar

有没有办法“部署”节点模块文件夹,目的是执行每个包的补丁操作并更改节点模块文件夹内的代码?

我将不胜感激。

【问题讨论】:

【参考方案1】:

Asar 是只读存档格式,因此您无法修补存档中的任何文件。 但是您可以做的是禁用 build 配置中的 asar 选项。

所以在你的package.json 中这样定义它:

"build": 
    "appid": "........",
    "win":   ........,
    "asar":  false

如果你构建了这个,就没有 asar 存档了,你可以覆盖任何文件...

您还可以通过编程方式使用 asar。因此,您可以解压缩 asar 存档、更新文件和打包新存档。查看here如何使用它

【讨论】:

【参考方案2】:

与这里所说的相反,修补 .asar 存档是完全可能的。我在 NPM 上发布了一个名为 patch-asar 的库,专门用于此目的。

【讨论】:

你不能修补 asar 文件....你所做的是解压一个 asar 文件并创建一个新的....这不是修补一个 asar 文件。

以上是关于打包和解包要修补的 Electron Native 应用程序的 node_modules的主要内容,如果未能解决你的问题,请参考以下文章

electron之asar加密打包

electron-packager打包spawn EPERM

03、electron-builder打包命令报错

vue+electron打包不能网络请求

linux 下 打包 和解压缩

Electron打包优化