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

How to check, where an application is located under OS X?

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

但是,如果您安装了多个应用程序实例,则此方法无效。 LSFindApplicationForInfo 仅获取一个应用程序实例的位置。此外,此功能在 OS X 10.10.

中已弃用

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

如何在用 C 或 Objective-C 编写的源代码中获取具有相同包标识符或相同名称 "name.app" 的所有应用程序实例的位置?

How to find multiple apps with same bundle identifier?

Check if a Mac OS X application is present

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

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