在基于文档的 Cocoa 应用程序中,处理的文件扩展名列在应用程序的 Info.plist 文件中。
我正在构建的应用程序将需要为其打开的每种类型的文件提供一个可加载的包。因此,我希望 bundle 的存在可以修改我的应用程序将自身注册为处理某些文件类型的方式。
举个例子,如果安装了 HTML.bundle
,我的应用程序应该允许打开 HTML 文档,但如果该包不存在,则不应打开。
它是否必须是应用程序级别的设置,还是可以通过应用程序的已安装 bundle 进行分发?
我指的是基于文档的应用程序的 Info.plist 中的“文档类型”。
最佳答案
您应该从应用程序内重写 Info.plist 文件:
if (bundle_installed(@"HTML.bundle")) {
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:PATH_TO_PLIST];
/* add/remove things to/from dict here */
[dict writeToFile:PATH_TO_PLIST atomically:YES]; // atomically is important! Must be YES!!
}
这很容易实现,但是,您的应用程序必须重新启动才能完成更改。
<小时/>您应该将备份 Info.plist 添加到 Resources
目录中,以防出现问题。
关于cocoa - 允许 bundle /插件添加到 Cocoa 应用程序支持的文档扩展中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4003506/