在Mac / Linux上查找已安装的应用程序

时间:2011-09-14 13:19:38

标签: c++ linux macos installer

如果您的应用程序依赖于正在安装的其他应用程序,理想情况下您希望安装程序自动找到该依赖关系路径。在Windows上,您可以使用注册表,但是Mac / Linux呢?在这种特殊情况下,它是一个C ++应用程序,如果这会产生影响。

4 个答案:

答案 0 :(得分:1)

如果您尝试通过Linux(apt,yum)上的任何常见程序包管理器分发应用程序,则可以将该应用程序添加为依赖项。 如果你沿着自定义安装脚本的路线走下去,你需要诉诸某种hackery。要么找出系统中正在使用的软件包管理器,并尝试使用它进行查询(如果没有软件包管理器安装了其他应用程序,则可能会失败)或尝试类似which required_app的内容。

如果你想做的话,先去第一个。

答案 1 :(得分:1)

在Mac OS X中,如果您正在寻找捆绑在典型.app捆绑包中的应用程序,则可以使用Spotlight使用命令行实用程序mdfind(1)从其捆绑ID中查找它。例如,要查明是否已安装Firefox(以及在何处),请运行以下命令:

mdfind 'kMDItemCFBundleIdentifier == org.mozilla.firefox'

答案 2 :(得分:0)

通常,在UNIX系统上,您可以预期所有程序都驻留在$ PATH中,而不是分布在愚蠢命名和部分本地化目录的hodge-podge集合中。所以,基本上你不需要找到任何依赖路径 - 你只需通过execvp调用另一个“app”(程序),并且libc负责遍历$ PATH的条目并找到可执行文件。

在传统的UNIX模型中,您不检查安装程序中的任何内容,只是在运行时检查可执行文件是否可用(例如,可用)。

答案 3 :(得分:0)

Linux软件包管理器等同于Windows Installer。程序包管理器处理依赖性并进行安装(如果系统上尚不存在)。应用程序的依赖项信息存储在包文件中。每个发行版都有自己的Package Manager,尽管概念相同。

在线上有大量资源可用于有关软件包管理器的详细信息。但是,如果您想获得与Windows Installer相比的概述,请查看application management in GNU/Linux for Windows users