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可以证明这一点。     
已邀请:
这里的一个问题是,您试图将同一扩展名与Launch Services无法处理的两个不同的UTI相关联。您导入的
com.rarlab.rar-archive
声明是正确的,并且按预期将所有
rar
类型的文件分配给
com.rarlab.rar-archive
。 您不必要地声明了Exported声明,因为它试图重新定义
rar
扩展名。而不是这样做,您只想使用Imported声明并在QuickLook扩展中使用
com.rarlab-rar-archive
声明它可以工作的内容。 只要其他应用程序未声明QuickLook扩展名,就可以很好地声明此配对并使​​其起作用。但是,由于听起来其他应用程序已经具有针对该特定UTI的QuickLook扩展,因此我认为您可能会选择删除它。我的经验是,冲突的QuickLook扩展名是先到先得。     

要回复问题请先登录注册