electron 如何获得一个电子js便携式应用程序的电流路径?

ktecyv1j  于 2022-12-16  发布在  Electron
关注(0)|答案(1)|浏览(169)

大家好,开发人员/程序员。今天我来寻求帮助的东西,是我正在做一个应用程序,如果或如果它必须是可移植的,我遇到的问题是,当编写一个zip文件的应用程序找不到目录或生成的zip损坏。
我编写zip文件的代码如下所示:

ipcMain.on("report-file", async (event, data) => {
      let zipFilePath = "report.zip"

      let output = fs.createWriteStream(zipFilePath);
      let archive = archiver("zip")
      archive.pipe(output);

      if (data.saves) {
            archive.directory(`game/saves`, false)
            archive.directory(`game/cache`, false)
      }

      archive.append(fs.createReadStream(`log.txt`), {
            name: `log.txt`,
      })

      archive.append(fs.createReadStream(`traceback.txt`), {
            name: `traceback.txt`,
      })

      archive.finalize()  
});

电子版:21.2.3
销售代表:Windows 11
电子构建器版本:23.6.0
再深入一点看,我发现应用程序使用的地址是C:\User\User\AppData\Local\Temp\[id]\resources\app.asar,它试图压缩文件,就好像它们在那个路径中一样,但是,要压缩的文件位于.exe是. (G:\myapp\dist)的位置
我已经试着按照stackoverflow page上的一个旧帖子来修复它,但是,它没有解决这个问题,所以今天我决定在这里问我的问题,你知道如何获得一个electronic js便携式应用程序的实际路径吗?

pdtvr36n

pdtvr36n1#

我找到了解决这个问题的方法,那就是用electron创建一个对话框,然后加载文件夹位置。然后使用resolve和可执行文件的地址,这样它就正确地加载了exe所在文件夹的地址。

let dir
dir = await dialog.showOpenDialog(win, {
     properties: ['openDirectory'],
     defaultPath: path.resolve('.', process.env.PORTABLE_EXECUTABLE_DIR)
});

相关问题