0

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

我可以做:

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

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

/Applications/My Application
/Applications/My Application 2

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

有谁知道我如何手动遍历所有应用程序并验证哪个是正确的?或者与 fullPathForApplication 类似的方法,它会返回所有结果,而不是随机选择一个?

4

1 回答 1

1

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

如果找到多个与指定特征匹配的应用程序,Launch Services 会选择一个,其方式与查找用于打开项目的首选应用程序时相同。

如果您的应用打开特定文件类型或 URL,请使用LSCopyApplicationURLsForURL(),它会返回匹配应用的数组。

于 2013-04-04T15:52:20.117 回答