应用程序无法获取 运行 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.
谢谢。
在我的应用程序中,有时我需要找出应用程序可执行文件的路径。我使用 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.
谢谢。