1

在我的应用程序中,有时我需要找出应用程序可执行文件的路径。我使用QApplication::applicationFilePath()它,它工作正常。但是当我在 Linux 上将我的应用程序作为 AppImage 分发时,这会中断。它返回正在运行的 AppImage 的挂载路径,例如/tmp/.mount_MyAppxyzabc/MyApp. 但我需要获取 AppImage 本身的路径,例如/home/vlad/MyApp/MyApp.AppImage. 这可以从正在运行的应用程序内部获得吗?

4

2 回答 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 回答