在我的应用程序中,有时我需要找出应用程序可执行文件的路径。我使用QApplication::applicationFilePath()
它,它工作正常。但是当我在 Linux 上将我的应用程序作为 AppImage 分发时,这会中断。它返回正在运行的 AppImage 的挂载路径,例如/tmp/.mount_MyAppxyzabc/MyApp
. 但我需要获取 AppImage 本身的路径,例如/home/vlad/MyApp/MyApp.AppImage
. 这可以从正在运行的应用程序内部获得吗?
问问题
136 次
2 回答
1
我很快找到了答案,我将把它留给其他人。至少对于由linuxdeployqt
(不确定其他 AppImages)部署的 AppImages,appimage 的路径在环境变量 $APPIMAGE 中。
所以在我的代码中我使用:
QString appImagePath = QProcessEnvironment::systemEnvironment().value(QStringLiteral("APPIMAGE"));
然而,返回的字符串以路径分隔符“/”结尾,所以我需要删除它。
于 2020-11-01T22:51:04.200 回答
0
上面的代码对我不起作用。appImagePath 设置为一个空的 QString。此外,以下内容:
QProcessEnvironment env(QProcessEnvironment::systemEnvironment());
QStringList tt = env.keys();
QFile outFile("./debug.txt");
outFile.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream out(&outFile);
for (QStringList::iterator it = tt.begin(); it != tt.end(); ++it)
out << *it << " " << env.value(*it) << endl;
outFile.close();
在我的发布版本中为我工作,但在 appImage 中没有
这是在 Linux 上。
谢谢。
于 2022-02-07T17:00:28.103 回答