Objective-C - 遍历所有已安装的应用程序

时间:2013-04-04 15:31:55

标签: objective-c macos cocoa

我一直在尝试使用NSWorkspace和fullPathForApplication,但这不符合我的需求,因为它没有返回正确的应用程序。

我能做到:

[NSBundle bundleWithPath: [[NSWorkspace sharedWorkspace] fullPathForApplication: @"My Application"]];

这将返回最近安装的任何(我相信):

/Applications/My Application
/Applications/My Application 2

我希望“我的申请”被退回,但第二个是回归。我不想假设所有应用程序都安装在/ Applications /中,所以我不只是循环浏览文件夹。

有谁知道如何手动循环浏览所有应用程序并验证哪个是正确的?或者类似于fullPathForApplication的方法,它会返回所有结果,而不是随意选择一个?

1 个答案:

答案 0 :(得分:1)

我相信你正在使用的NSWorkspace方法是LSFindApplicationForInfo()的外观,记录它只返回一个应用程序:

  

如果找到多个匹配指定特征的应用程序,则启动服务会选择一个与查找打开项目的首选应用程序时相同的方式。

如果您的应用打开特定的文件类型或网址,请使用LSCopyApplicationURLsForURL(),它会返回一系列匹配的应用。