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