1

在基于文档的 Cocoa 应用程序中,处理的文件扩展名列在应用程序的 Info.plist 文件中。

我正在构建的应用程序需要为它打开的每种类型的文件提供一个可加载的包。因此,我希望存在捆绑包来修改我的应用程序将自身注册为处理某些文件类型的方式。

例如,如果HTML.bundle安装了,我的应用程序应该允许打开 HTML 文档,但如果包不存在,那么它不应该。

它必须是应用程序级别的设置,还是可以通过已安装的应用程序包分发?

我指的是基于文档的应用程序的 Info.plist 中的“文档类型”。

4

1 回答 1

1

您应该从应用程序中重写 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目录中。

于 2010-10-23T12:07:05.293 回答