cocoa - 操作系统 X : bundle location by identifier for newly installed application

标签 cocoa macos bundle

类似Locating bundles by identifier的问题,但不同的问题:

我有几个应用程序需要通过 ID 来查找彼此的包。这总是很有效,除非我对所有应用程序进行全新安装。在许多情况下,将查找器指向安装位置即可了解 bundle 的位置,但有时这还不够;我必须先运行该应用程序,然后才能使用它的包 ID 来查找路径。我应该提到的是,我使用的安装程序将应用程序复制到/Applications/,因此当我安装应用程序时,查找器永远不会打开。

看来,当新安装应用程序 bundle 时,系统需要一段时间才能更新将 bundle ID 映射到 bundle 位置的内部注册表。我想知道的是:

  1. 这些映射在哪里维护,
  2. 如何强制系统/文件管理器/工作区(?)更新 map

最佳答案

映射在启动服务数据库中维护。我不知道它存储在哪里,但确切的位置无关紧要,因为有更好的方法来实现您的目标。

您可以通过多种方式手动更新启动服务数据库,但就我个人而言,我认为以编程方式执行此操作会更容易,尤其是在您的情况下。在这种情况下,您将利用启动服务 API,具体来说,我会考虑使用 LSRegisterURL() ,因为这似乎实现了你想做的事情。

看看Launch Services documentation有关在数据库中注册应用程序以及这一切通常如何工作的更多信息。

关于cocoa - 操作系统 X : bundle location by identifier for newly installed application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/993244/

相关文章:

swift - 使用 Swift 禁用 OSX 的 sleep /屏幕保护程序

java - Felix 如何查看 bundle ?

mysql - CENTOS 中的 REDMINE 安装(bundle/mysql 错误)

c# - Mac 和 Linux 上类似 Windows 的 shell 扩展

java - 无法通过 bundle 将字符串从一个 fragment 发送到另一个 fragment

cocoa - 在 Interface Builder 中哪里可以找到 "Collapsible Panel"Cocoa 控件?

objective-c - 即使主窗口未激活,NSPopover 也会显示

objective-c - 删除UIView底部的灰色条

macos - 让 NUnit 测试在 Visual Studio Team Services(Mac 构建代理)上运行

macos - OpenCL:如何优化缩减内核(列总和),目前 CPU 速度更快