如何在app文件夹中下载文件?[打包后]

时间:2017-07-03 08:28:02

标签: node.js electron electron-builder electron-packager

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

我在index.js中有这两行代码可以下载并在我的电子窗口中显示html

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

在开发模式下工作正常,文件下载到我的index.js所在的同一文件夹中。但打包后,app文件正在下载app文件夹。打包文件夹结构在WRM_80下面给出..是我下载的文件夹。 after packaging

这就是为什么我无法将下载的文件加载到窗口中。如何在app文件夹中下载文件?如果这不可能,我如何从resources \ app位置加载外部文件?

1 个答案:

答案 0 :(得分:0)

通过将目录引用为electron,您实际上是在告诉应用程序下载到working directory。在这种情况下,工作目录是包含程序的文件夹。在开发和使用.exe命令时,工作目录是应用程序的根目录。但是,一旦安装并作为const {app} = require('electron'); app.getPath('userData') 运行,工作目录将更改为可执行文件的位置。

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

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

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

所以你的代码应该是这样的:

dataset