【发布时间】:2012-08-13 20:08:30
【问题描述】:
我创建了一个应用程序,通过在我的应用程序 info.plist 中添加一个 NSService 条目(如http://www.macosxautomation.com/services/learn/),为某些文件公开 OSX 服务,但我发现在新机器上安装我的应用程序时,该服务不会'在查找器右键单击上下文菜单中不会快速显示。
我知道这是因为粘贴板服务没有重新索引 /Applications 文件夹并“发现”新安装的服务。
我也知道我可以通过手动运行 /System/Library/CoreServices/pbs 来强制重新索引和发现。
这里的问题是,对于第一次安装我的应用程序的用户来说,确保我的服务尽快出现的最佳方式是什么。
我可以在我的应用程序启动时对“/System/Library/CoreServices/pbs”执行系统调用——如果用户立即启动我的应用程序——但这只能部分解决问题(另外我想知道是否有一种更好的基于 Cocoa API 的方法)。
如果我的应用程序通常只能通过上下文菜单访问,那么用户一开始就不会想到出去启动应用程序。当上下文菜单不存在时,他们只会认为它已损坏。
我没有通过安装程序分发我的应用程序。我只是提供一个可以拖放到 /Applications 的包(我相信 Apple 通常会建议)。
有没有办法在以这种方式进行安装时加快服务发现的过程,这样用户就不会有一段时间没有新安装的服务?
附带说明,该问题似乎在 10.8 中可能不存在(或至少不明显)。 Apple 可能在其最新版本中更快地实现了这种索引。
【问题讨论】:
标签: objective-c macos cocoa