查找作为 AppImage 运行的程序

查找作为 AppImage 运行的程序

为了使用一些命令行参数从 Java 启动它,我尝试以编程方式本地化作为 AppImage 运行的某个应用程序。在我的例子中,它是MuseScore 应用程序

我使用命令安装了它./MuseScore*.AppImage install

我首先尝试从终端使用不同的选项来本地化该应用程序dpkg-query -L musescorewhich musescore。我沒有回應。

在 Windows 中,我既可以搜索注册表,也可以解析命令行命令的结果assoc ".myext"

然后,在 Java 中,使用

String program=null;
Process pr = Runtime.getRuntime().exec("cmd /c assoc \".myext\"");
try (BufferedReader reader = new BufferedReader(new InputStreamReader(pr.getInputStream()))) {
    program=reader.readLine();
}

我怎样才能在 Ubuntu 中做到这一点?

答案1

./MuseScore*.AppImage install将 appimage 移至~/.local/bin

未创建名为 的命令,musescore因此您使用的 which 命令在这种情况下毫无用处。dpkg也不会给您任何线索,因为您没有使用dpkg它来安装它。安装还创建了一些指向名为mscore-portable和 的应用程序映像的符号链接musescore-portable

您可以使用find-command 来定位 appimage。我不需要这样做,我只是读取了 install 命令的输出。

要从命令行运行 appimge,您需要指定 appimage 的完整路径,如果~/.local/bin不在您的 PATH 中,则指定其中一个符号链接。

答案2

如果您需要知道 AppImage 二进制文件(或任何文件)的位置,请运行以下命令。

find / -name "*.AppImage" -exec ls -l {} \;

该命令find将搜索 root /,然后ls -l显示文件的路径。如果文件名已更改,请进行相应调整。


正如其他人指出的那样,使用dpkg-query -L musescore不会产生任何结果,因为二进制文件不是使用包管理器安装的;因此,dpkg不“知道”它的存在。

并且使用which musescore也不会产生结果,因为 AppImage 不在 PATH 中定义的目录中,也不在可执行二进制文件的文件名中,即二进制文件是MuseScore.AppImage而不是musescore

答案3

可以通过 3 个步骤实现此目的:

  1. (可选)检索所搜索应用程序管理的文件的 mime 类型

命令:xdg-mime query filetype path\to\a\file

结果:application/x-y-z

  1. 搜索处理此 mime 类型的应用程序:

命令:xdg-mime query default application/x-y-z

结果:someapplication.desktop

  1. 搜索该桌面文件并提取执行路径:搜索XDG_DATA_DIRS以及中列出的文件夹中的文件/home/myuser/.local/share/applications/。如果找到,则将其解析为常规属性文件并搜索Exec属性

https://gist.github.com/lgvr123/cdeb8f432ddfdc0ae56ce23e71f1b177

  1. 或者,如果 (3) 失败:在本地搜索应用程序:

命令:(which someapplication请注意,“.desktop”已从步骤(2)的结果中删除)

结果:/home/myuser/.local/bin/someapplication如果应用程序不在本地,则为空字符串。

相关内容