应用程序无法获取 运行 AppImage 路径

application cannot get the running AppImage path

在我的应用程序中,有时我需要找出应用程序可执行文件的路径。我使用 QApplication::applicationFilePath() 并且效果很好。但是当我在 Linux 上将我的应用程序作为 AppImage 分发时,这会中断。它 returns 安装 运行 AppImage 的路径,例如/tmp/.mount_MyAppxyzabc/MyApp。但我需要获取 AppImage 本身的路径,例如/home/vlad/MyApp/MyApp.AppImage。是否可以从 运行 应用程序内部获取?

我很快找到了答案,我会把它留给其他人。至少对于 linuxdeployqt 部署的 AppImages(不确定其他 AppImages),appimage 的路径在环境变量 $APPIMAGE.

所以在我的代码中我使用: QString appImagePath = QProcessEnvironment::systemEnvironment().value(QStringLiteral("APPIMAGE"));

然而,返回的字符串以路径分隔符“/”结尾,因此我需要将其删除。

上面的代码对我不起作用。 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.

谢谢。