你能动态分配CFBundleDocumentTypes到你的Cocoa应用程序吗?意思是在运行时,我可以为我的应用程序分配更多的扩展来处理。
目前我设置了一些扩展为我的应用程序处理使用CFBundleDocumentTypes在信息。plist,但我想通过代码来做到这一点,而应用程序正在执行(在运行时)。基本上,我可以使启动服务意识到新的扩展而不修改信息。plist文件。
谢谢。
目前,还没有公共API1用于应用程序在运行时动态(un)向Launch Services注册文档类型。
Open Emu面临着这个问题。用户可以选择性地下载/安装模拟器,这些模拟器是包含Info。列表文件定义文档类型。在安装模拟器后,包中定义的类型需要成为应用程序 Info.plist中定义的类型的一部分。Open Emu重写了应用程序Info。- updateinfoplist在OEGameDocumentController.
注意,覆盖bundle Info。plist违反了Mac App Store的政策。
我们已经归档雷达要求文档类型的运行时(un)注册。我建议你再提交一份,关闭号为#2526726的副本。即使是重复的,重要的是要把它归档,这样苹果就能估计有多少人需要这个功能。
1这可能通过SPI实现。当我在研究这个的时候,我在Launch Services中偶然发现了_LSRegisterItemFromItemInfo()