2011-05-15 3 views
5

내 응용 프로그램에서는 다른 응용 프로그램에서도 사용하는 비 시스템 확장명을 읽는 QuickLook 플러그인을 포함하고자했습니다 (이 예제에서는 RAR을 사용합시다). 그래서 같은 내 응용 프로그램 번들의의 Info.plist에 Exported UTI로 확장을 선언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 -name kMDItemContentTypeTree "/Users/Me/.../A File.rarx" 
>>> kMDItemContentTypeTree = (
    "com.another-company.rarx-archive", 
    "public.data", 
    "public.item", 
    "public.archive" 
) 

왜 내는 요로 감염은 (com.my-company.rarx-archive)는이 목록에 표시되지 않습니다 연결을 확인하려면, 정말 같은 mdls를 사용? 파일이 com.another-company.rarx-archive UTI와 연결되어 있기 때문에 이것이 내 Quick Look 플러그인이 실행되지 않는다고 생각합니다. 내 시스템의 다른 앱이 대신 사용되는 앱입니다. 디버그 출력을 사용하여 qlmanage을 실행하면이 문제가 해결됩니다.

답변

1

하나의 문제는 동일한 확장명을 두 개의 다른 UTI와 연결하려고하는데, 실행 서비스에서 처리 할 수없는 두 가지 UTI입니다. 가져온 com.rarlab.rar-archive 선언이 올바른지 확인하고 rar 유형의 모든 파일을 com.rarlab.rar-archive으로 할당합니다.

rar 확장명을 다시 정의하려고 시도하여 내 보낸 선언이 불필요하게 선언되었습니다. 이를 수행하는 대신 가져온 선언을 사용하고 QuickLook 확장 프로그램에서 com.rarlab-rar-archive을 사용하여 작동 할 수있는 것을 선언하십시오.

다른 응용 프로그램이 QuickLook 확장 프로그램을 선언하지 않는 한이 페어링을 선언하고 제대로 작동해야합니다. 그러나 다른 앱에 이미이 UTI에 대한 QuickLook 확장 프로그램이있는 것처럼 들리므로 사용자가 삭제할 수있는 옵션이있을 수 있습니다. 내 경험에 따르면 충돌하는 QuickLook 확장 프로그램은 선착순으로 제공됩니다.