electron - 电子生成器快照安装程序混淆主目录
问题描述
这是上一个问题Defult home directory for snap installer using electron-builder的后续,根据那里的要求询问。
我目前正在构建一个电子应用程序,.deb
并.snap
使用电子构建器构建安装程序。我的应用程序用于showSaveDialog/showOpenDialog
打开/保存打开 nautilus(在 ubuntu 中)的文件,如文件资源管理器。现在如果使用.snap
安装程序安装应用程序,资源管理Home
器弹出中的选项卡指向/home/user/snap/<app>/<revision>/
如下图所示,而不是我们通常home
在 linux 中调用的实际目录(/home/username/
)。由于Home
此弹出式资源管理器窗口中的不是实际用户的主目录,因此用户会感到困惑。
有没有办法来解决这个问题?
解决方案
这似乎是基于 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 环境变量。
您可以覆盖此变量以影响文件选择器,但您需要尽早执行此操作。在我的测试中,它需要在 app-ready 事件之前完成:
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();
});
这样做需要您自担风险;这种变化可能还有其他潜在的不良影响。我没有在快照限制下运行它,但能够更改文件选择器用于“主页”条目的目录。
推荐阅读
- sql - PostgreSQL:创建一系列唯一的数字以供参考
- android - 插件冲突错误:Google plus 和 Push 插件
- php - How do i get looping
- java - Android Firebase Authentication probem
- python - How to excuite test classes in suite one after the other?
- ios - ios swift 3在重新加载tableView时删除每个单元格的内容
- tfs-workitem - TFS 2017 团队通知可用角色
- vba - 工作表更改时变量未存储在代码中
- php - 将 PHP 框架从一台主机移动到另一台主机,生成未知记录属性/相关组件错误
- gcc - 如何让 GCC 像 ICC 一样生成向量指令?