如何检查OS X下的应用程序位置?

时间:2015-02-26 16:36:53

标签: c++ objective-c macos bundle-identifier cfbundleidentifier

如何检查OS X下安装的应用程序的位置? 我使用方法LSFindApplicationForInfo尝试了它,如果您正在搜索包标识符,它可以正常工作。

但是,如果您安装了多个应用实例,则这种方式无效。 LSFindApplicationForInfo只获取应用的一个实例的位置。此外,OS X 10.10中不推荐使用此功能。

来自以下线程的终端输入mdfind "kMDItemCFBundleIdentifier工作正常,但只有在启用了聚光灯的情况下才能正常工作。

如何使用相同的包标识符或相同的名称来取消所有应用实例的位置" name.app"用C或Objective-C编写的内部源代码?

How to find multiple apps with same bundle identifier?

Check if a Mac OS X application is present

1 个答案:

答案 0 :(得分:3)

如果您可以定位10.10或更高版本,则可以使用LSCopyApplicationURLsForBundleIdentifier()。这被记录为返回具有给定包标识符的所有应用程序的URL。

我不清楚您尝试查找的应用是否属于您控制的属性。如果是,并且您需要在10.10之前支持OS X版本,您可以使用的一种方法是使目标应用程序声明支持自定义虚拟URL方案。然后,您可以使用LSCopyApplicationURLsForURL()查找它的所有实例。您使用虚拟方案构建URL,例如com-yourcompany-yourproduct-app-identifier-scheme://junk并将其作为输入传递。