类似Locating bundles by identifier的问题,但不同的问题:
我有几个应用程序需要通过 ID 来查找彼此的包。这总是很有效,除非我对所有应用程序进行全新安装。在许多情况下,将查找器指向安装位置即可了解 bundle 的位置,但有时这还不够;我必须先运行该应用程序,然后才能使用它的包 ID 来查找路径。我应该提到的是,我使用的安装程序将应用程序复制到/Applications/,因此当我安装应用程序时,查找器永远不会打开。
看来,当新安装应用程序 bundle 时,系统需要一段时间才能更新将 bundle ID 映射到 bundle 位置的内部注册表。我想知道的是:
- 这些映射在哪里维护,
- 如何强制系统/文件管理器/工作区(?)更新 map
最佳答案
映射在启动服务数据库中维护。我不知道它存储在哪里,但确切的位置无关紧要,因为有更好的方法来实现您的目标。
您可以通过多种方式手动更新启动服务数据库,但就我个人而言,我认为以编程方式执行此操作会更容易,尤其是在您的情况下。在这种情况下,您将利用启动服务 API,具体来说,我会考虑使用 LSRegisterURL()
,因为这似乎实现了你想做的事情。
看看Launch Services documentation有关在数据库中注册应用程序以及这一切通常如何工作的更多信息。
关于cocoa - 操作系统 X : bundle location by identifier for newly installed application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/993244/