electron - Electron 生成器快照安装程序使主目录困惑

标签 electron electron-builder snapcraft

这是上一个问题Defult home directory for snap installer using electron-builder的后续操作,该问题在此处被询问。
我目前正在构建一个 Electron 应用程序,并使用 Electron 构建器构建像.deb.snap这样的安装程序。我的应用程序使用showSaveDialog/showOpenDialog打开/保存文件,该文件打开了像文件浏览器这样的鹦鹉螺(在ubuntu中)。现在,如果使用.snap安装程序安装了该应用程序,则资源管理器弹出窗口中的Home选项卡指向/home/user/snap/<app>/<revision>/,如下图所示,而不是我们通常在linux中称为home的实际目录(/home/username/)。由于此弹出的浏览器窗口中的Home不是实际用户的主目录,因此使用户感到困惑。
有没有办法来解决这个问题?
enter image description here

最佳答案

当在快照限制中运行时,这似乎是基于GTK的打开/保存对话框所遇到的常见问题。
网上散布了以下错误报告:

  • https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/1848918
  • https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/1798450
  • https://forum.snapcraft.io/t/libreoffice-snap-home-folder-points-to-wrong-folder-on-open-dialog/6203/2
  • https://github.com/ubuntu/snapcraft-desktop-helpers/issues/167

  • 上面最后一个链接中的注释者建议设置$ G_HOME环境变量。
    您可以覆盖此变量以影响文件选择器,但是您需要尽早进行操作。在我的测试中,它需要在应用就绪事件之前完成:
    const os = require("os");
    process.env.G_HOME = os.userInfo().homedir;
    
    const {app, dialog} = require("electron");
    
    app.on("ready", function() {
        console.log(process.env.G_HOME); // should print your actual home directory
        dialog.showOpenDialogSync();
    });
    
    这样做需要您自担风险;此更改可能还会有其他潜在的不良影响。
    我没有在快速限制下运行此文件,但是能够更改文件选择器用于“主页”条目的目录。

    关于electron - Electron 生成器快照安装程序使主目录困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65872077/

    相关文章:

    node.js - .returning() 不受 sqlite3 支持,不会有任何影响

    node.js - 如何在snapcraft中正确安装nodejs?

    Snapcraft 自定义 LD_LIBRARY_PATH

    javascript - 如何忽略包中的 src 文件夹

    javascript - 找不到模块 './App.svelte' 或其对应的类型声明

    electron - 将许多事务 typeorm 启动到循环 javascript

    docker - 快照和gitlab-CI : error: cannot communicate with server: Post http://localhost/v2/snaps/hello-world

    electron - 将 Electron 桌面应用程序与硬件连接

    javascript - Javascript方法无法从外部样式表中使用- Electron

    node.js - 在 Electron 中使用 gRPC