如何下载应用程序文件夹中的文件?[打包后]

How can i download file inside app folder ?[ after packaging ]

这是我当前的文件夹结构before packaging WRM_80..是我下载的文件夹。

我在index.js里面有这两行代码可以在我的electronwindow

中下载和显示html
fs.createReadStream('./Report.zip').pipe(unzip.Extract({ path: './'+folderName }));
LoginWindow.loadURL(`file://${__dirname}./`+folderName+`/t01s01q01.html`);

在开发模式下它工作正常,文件下载到我的 index.js 所在的同一文件夹中。但是打包后,应用程序文件正在下载到应用程序文件夹之外。打包后的文件夹结构如下WRM_80..是我下载的文件夹。 after packaging

这就是我无法将下载的文件加载到 window 的原因。如何下载应用程序文件夹中的文件?如果那不可能,我如何从 resources\app 位置加载外部文件?

通过将目录引用为 ./folder_name,您实际上是在告诉应用程序下载到 working directory。在这种情况下,工作目录是程序所在的文件夹。在开发和使用 electron 命令时,工作目录是应用程序的根目录。然而,一旦安装并且 运行 作为 .exe,工作目录将更改为可执行文件的位置。

要解决这个问题,请不要使用当前工作目录。而是使用用户/应用程序数据文件夹来存储此信息。它不仅是跨开发和部署的一致位置,而且还是存储应用程序数据的语义正确位置。

在 Electron 中,您可以通过以下方式获取应用程序数据文件夹的路径:

const {app} = require('electron');
app.getPath('userData')

因此您的代码应如下所示:

var userData = app.getPath('userData');
fs.createReadStream(`${userData}/Report.zip`).pipe(unzip.Extract({ path: `${userData}/${folderName}` }));
LoginWindow.loadURL(`file://${userData}/${folderName}/t01s01q01.html`);