2023-05-18
温故知新
00

目录

实践
ChatGPT给出方案(不太靠谱)
赞助

要将自定义文件夹打包进app.asar,需要进行如下步骤:

实践

  • 本实践将资源文件打包进 win-unpacked/resources/app 文件夹下

使用electron-builder,在build配置下增加以下配置

json
"extraResources": [ { "from": "resources/dist/", "to": "app/dist/" }, { "from": "resources/config/", "to": "app/config/" }, { "from": "resources/sql/", "to": "app/sql/" }, { "from": "resources/cashbook-server.exe", "to": "app/cashbook-server.exe" } ]

以第一个配置为例说明:

  • from:resources/dist/:指定当前目录下的resources/dist/文件夹
  • to:app/dist/:打包时,将指定的文件夹内容拷贝到resouorces/app/dist文件夹

ChatGPT给出方案(不太靠谱)

  1. 在应用程序的根目录下创建一个名为resources的文件夹。

  2. 将要打包进app.asar的自定义文件夹(例如myFolder)复制到resources文件夹中。

  3. 在应用程序的主进程代码中,使用以下代码获取resources文件夹的绝对路径:

js
const path = require('path'); const resourcesPath = path.join(__dirname, 'resources');
  1. 在BrowserWindow的options中设置webPreferences的preload选项为path.join(resourcesPath, 'preload.js'),例如:
js
const { BrowserWindow } = require('electron'); const path = require('path'); const resourcesPath = path.join(__dirname, 'resources'); const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { preload: path.join(resourcesPath, 'preload.js') } });

这样可以确保在渲染进程中可以使用require来获取myFolder文件夹中的文件。

  1. 在preload.js中,使用以下代码来获取myFolder文件夹的绝对路径:
js
const path = require('path'); const { remote } = require('electron'); const resourcesPath = remote.app.getPath('userData'); const myFolderPath = path.join(resourcesPath, 'myFolder');

这样可以确保在渲染进程中可以使用node.js的fs模块访问myFolder文件夹中的文件。

  1. 在package.json的build选项中,添加以下代码:
js
"build": { "asarUnpack": [ "resources/myFolder" ] }

这样可以确保在打包应用程序时,myFolder文件夹不会被打包进app.asar,而是作为一个独立的文件夹存在。

  1. 运行打包命令,即可将自定义文件夹打包进应用程序。

赞助

如果你觉得本文对你有用,想要给作者一些赞助,可以动动小手点击下方广告给予支持,万分感谢~

您的每次点击都能给予作者更多分享的动力!请无情点击吧:

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!