【问题标题】:Finding an installed application on Mac/Linux在 Mac/Linux 上查找已安装的应用程序
【发布时间】:2011-11-17 00:48:14
【问题描述】:

如果您的应用程序依赖于正在安装的另一个应用程序,您最好希望安装程序自动找到该依赖项路径。在 Windows 上,您可以使用注册表,但 Mac/Linux 呢?在这种特殊情况下,它是一个 C++ 应用程序,如果这会有所不同的话。

【问题讨论】:

  • 使用包管理器。在 Linux 上,构建 debrpm 包。使用标准构建实用程序,您可以做到这一点,以便发行版维护者可以轻松编译适合其发行版的包。
  • @PlasmaHH 当然。至少我是这么认为的——Linux 用户如何在他们的 PC 上安装 Flash?
  • @John:由于判断错误或暂时失去理智。
  • @John: zypper install flash-player

标签: c++ linux macos installation


【解决方案1】:

如果您尝试通过 Linux 上的任何常用包管理器(apt、yum)分发您的应用程序,您可以将应用程序添加为依赖项。 如果您沿着自定义安装脚本的路线走下去,您需要求助于某种骇客。找出系统上正在使用哪个包管理器并尝试使用它进行查询(如果在没有包管理器的情况下安装了其他应用程序,则可能会失败)或尝试类似which required_app

如果你想做对的话,就先去吧。

【讨论】:

    【解决方案2】:

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

    mdfind 'kMDItemCFBundleIdentifier == org.mozilla.firefox'
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        Linux 软件包管理器相当于 Windows 安装程序。包管理器处理依赖项并安装它(如果系统上还没有它)。应用程序的依赖信息存储在包文件中。尽管概念相同,但每个发行版都有自己的包管理器。

        关于包管理器的细节有很多在线资源。但是,如果您想了解与 Windows Installer 的对比情况,请查看application management in GNU/Linux for Windows users

        【讨论】:

          猜你喜欢
          • 2011-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-26
          相关资源
          最近更新 更多