UTI和文件扩展名的关联
|
在我的应用程序中,我想包含一个QuickLook插件,该插件读取其他应用程序也使用的非系统扩展(对于本示例,请使用RAR)。我在应用程序包的Info.plist中将扩展名声明为“ 0”,如下所示:
<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相关联。我系统上的另一个应用是代替使用的。用调试输出运行ѭ7可以证明这一点。
没有找到相关结果
已邀请:
1 个回复
锹缄
声明是正确的,并且按预期将所有
类型的文件分配给
。 您不必要地声明了Exported声明,因为它试图重新定义
扩展名。而不是这样做,您只想使用Imported声明并在QuickLook扩展中使用
声明它可以工作的内容。 只要其他应用程序未声明QuickLook扩展名,就可以很好地声明此配对并使其起作用。但是,由于听起来其他应用程序已经具有针对该特定UTI的QuickLook扩展,因此我认为您可能会选择删除它。我的经验是,冲突的QuickLook扩展名是先到先得。