2011-05-15 17 views
5

En mi aplicación, quería incluir un complemento QuickLook que lea una extensión que no sea del sistema que también usan otras aplicaciones (usemos RAR para este ejemplo). Declaro la extensión como un Exported UTI en Info.plist mi aplicación del paquete de este modo:UTI y asociaciones de extensiones de archivos

<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> 

Y también puedo importar la forma apropiada 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> 

Los archivos RARX nunca parecen conseguir asociados con mi aplicación después de que lo ejecute, sin embargo. Para comprobar la asociación, solía mdls así:

mdls -name kMDItemContentTypeTree "/Users/Me/.../A File.rarx" 
>>> kMDItemContentTypeTree = (
    "com.another-company.rarx-archive", 
    "public.data", 
    "public.item", 
    "public.archive" 
) 

¿Por qué no es mi UTI (com.my-company.rarx-archive) a aparecer en esa lista? Creo que esto está provocando que mi complemento Quick Look no se active, ya que los archivos están asociados con la UTI com.another-company.rarx-archive. La otra aplicación en mi sistema es lo que se usa en su lugar. Ejecutando qlmanage con salida de depuración confirma esto.

Respuesta

1

Un problema aquí es que intenta asociar la misma extensión con dos UTI diferentes, que Launch Services no puede manejar. Su declaración com.rarlab.rar-archive importada es correcta y asigna todos los archivos del tipo rar al com.rarlab.rar-archive como sería de esperar.

Ha declarado innecesariamente la declaración Exported, porque intenta redefinir la extensión rar. En lugar de hacer eso, solo quiere hacer uso de la declaración Importada y usar com.rarlab-rar-archive en su extensión QuickLook para declarar en qué puede trabajar.

Mientras la otra aplicación no declare una extensión QuickLook, debería estar bien declarar este emparejamiento y hacer que funcione. Sin embargo, dado que parece que la otra aplicación ya tiene una extensión QuickLook para esta UTI en particular, creo que puede tener la opción de eliminarla. Mi experiencia ha sido que las extensiones conflictivas de QuickLook son por orden de llegada.

Cuestiones relacionadas