【发布时间】:2011-05-15 15:16:00
【问题描述】:
在我的应用程序中,我想包含一个 QuickLook 插件,该插件可以读取其他应用程序也使用的非系统扩展(让我们在此示例中使用 RAR)。我在我的 app bundle 的 Info.plist 中将扩展声明为 Exported UTI,如下所示:
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.archive</string>
<string>com.rarlab.rar-archive</string>
</array>
<key>UTTypeDescription</key>
<string>Custom RAR Archive</string>
<key>UTTypeIdentifier</key>
<string>com.my-company.rarx-archive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>rarx</string>
</array>
</dict>
</dict>
</array>
而且我还适当地导入了 RAR UTI:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.archive</string>
</array>
<key>UTTypeDescription</key>
<string>RAR Archive</string>
<key>UTTypeIconFile</key>
<string>RAR</string>
<key>UTTypeIdentifier</key>
<string>com.rarlab.rar-archive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>rar</string>
<string>rarx</string>
</array>
</dict>
</dict>
</array>
不过,RARX 文件在我运行后似乎从未与我的应用程序关联。为了检查关联,我使用了mdls,如下所示:
mdls -name kMDItemContentTypeTree "/Users/Me/.../A File.rarx"
>>> kMDItemContentTypeTree = (
"com.another-company.rarx-archive",
"public.data",
"public.item",
"public.archive"
)
为什么我的 UTI (com.my-company.rarx-archive) 没有出现在该列表中?我相信这会导致我的 Quick Look 插件无法触发,因为这些文件与 com.another-company.rarx-archive UTI 相关联。我系统上的另一个应用程序被用来代替。运行带有调试输出的 qlmanage 可以证明这一点。
【问题讨论】:
标签: objective-c macos file-type uti