【问题标题】:application cannot get the running AppImage path应用程序无法获取正在运行的 AppImage 路径
【发布时间】:2022-02-08 01:00:28
【问题描述】:

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

【问题讨论】:

    标签: qt appimage


    【解决方案1】:

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

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

    返回的字符串以路径分隔符“/”结尾,所以我需要删除它。

    【讨论】:

      【解决方案2】:

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

      谢谢。

      【讨论】:

      • 如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。 - From Review
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      相关资源
      最近更新 更多