objective-c – 使用新服务项更新OSX右键上下文菜单

objective-c – 使用新服务项更新OSX右键上下文菜单,第1张

概述我已经创建了一个应用程序,通过在我的应用程序info.plist中添加NSService条目来暴露某个文件的OSX服务(如 http://www.macosxautomation.com/services/learn/),但我发现在新机器上安装我的应用程序时,该服务不会快速显示在finder中右键单击上下文菜单. 我知道这是因为粘贴板服务没有重新索引/ Applications文件夹并“发现”新安 我已经创建了一个应用程序,通过在我的应用程序info.pList中添加NSService条目来暴露某个文件的OSX服务(如 http://www.macosxautomation.com/services/learn/),但我发现在新机器上安装我的应用程序时,该服务不会快速显示在finder中右键单击上下文菜单.

我知道这是因为粘贴板服务没有重新索引/ Applications文件夹并“发现”新安装的服务.

我也知道我可以通过手动运行/ System / library / CoreServices / pbs强制重新索引和发现.

这里的问题是什么是确保我的服务第一次安装我的应用程序的用户尽快出现的最佳方法.

我的应用程序启动时,我可以执行系统调用“/ System / library / CoreServices / pbs” – 如果用户立即启动我的应用程序 – 但这只能部分解决问题(另外我想知道是否有更好的Cocoa API基于这样做的方式).

如果我的应用程序通常只能通过上下文菜单访问,那么用户永远不会想到出去并首先启动应用程序.只有当上下文菜单不存在时,他们才会认为它已被破坏.

我没有使用安装程序分发我的应用程序.我只是提供一个可以拖放到/ Applications中的软件包(我相信Apple通常建议).

在以这种方式进行安装时是否有办法加快服务发现过程,以便没有任何时间段用户没有新安装的服务?

作为旁注,似乎问题可能不存在于10.8(或至少是如此). Apple可能已经在最近的版本中更快地实现了这种索引.

解决方法 我实际上最终使用了

system("killall pbs;/System/library/CoreServices/pbs -flush");

在我的一个应用程序中,正如您所描述的那样,虽然已经很久以前,但10.5也存在问题.

但是,您可能想尝试此功能:

voID NSUpdateDynamicServices(voID)

根据文档的行为就像冲洗pbs,但是更清洁的解决方案.

此外,如果(根据您的描述),该应用程序只是一项服务,请考虑使其成为一项服务 – 请参阅(Installing the Service)

To build a standalone service,use the extension .service and store it in library/Services.
总结

以上是内存溢出为你收集整理的objective-c – 使用新服务项更新OSX右键上下文菜单全部内容,希望文章能够帮你解决objective-c – 使用新服务项更新OSX右键上下文菜单所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1071737.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存