ПТІ та послуги запуску
Де зберігається список "відомих" типів файлів?
Офіційний термін для "типів файлів" - це
Уніфіковані ідентифікатори типів
(UTI), а база даних UTI підтримується
службами запуску .
Використовуючи термінал , ви можете переглядати вміст бази даних Launch Services за допомогою lsregister
інструменту, який зберігається за адресою:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
Замість того, щоб вказувати цей довгий шлях щоразу, коли потрібно запустити lsregister
, ви можете тимчасово додати його каталог у свій PATH
:
PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"
і тоді ви можете запустити lsregister
, просто ввівши:
lsregister
Щоб переглянути вміст бази даних запуску:
lsregister -dump
Декларація про нові ІТП
Чи є спосіб змусити OS X розпізнавати нові типи файлів?
Ця стаття Apple
"Оголошення нових ідентифікаторів єдиного типу" надає корисну інформацію про те, як це зробити. Ось повний процес:
1. Створіть додаток-манекен
Створіть фіктивну програму для реєстрації у службі запуску:
- Відкрийте редактор AppleScript (розташований у папці Утиліти OS X ).
- Збережіть десь порожній скрипт (наприклад: на своєму робочому столі), встановивши його Формат файлу на додаток .
2. Відкрийте його файл Info.plist
- Знайдіть свою нову фіктивну програму у Finder.
- Клацніть на ньому правою кнопкою миші та у спливаючому меню виберіть пункт Show Package Contents .
- Відкрийте папку Зміст .
- Відкрийте файл Info.plist у текстовому редакторі (наприклад: TextEdit ).
3. Додайте свій новий UTI
Існує вибір двох клавіш:
UTExportedTypeDeclarations
- для власних розширень назви файлів.
UTImportedTypeDeclarations
- для розширень імен файлів, які вже існують, але не розпізнаються OS X.
Виберіть ключ, який найбільше відповідає вашим потребам.
Потім у файл Info.plist перед останніми двома рядками ( </dict></plist>
) додайте цей код:
<key>KEY</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>IDENTIFIER</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>EXTENSION</string>
</array>
</dict>
</dict>
</array>
внесення таких змін:
- Замініть
KEY
обраним ключем (або UTExportedTypeDeclarations
або UTImportedTypeDeclarations
).
- Замініть
IDENTIFIER
відповідним ідентифікатором DNS:
- Експортується - Щось подібне
com.mycompany.mytype
- Імпортні - Для ID Software «s
Дум WAD формат, відповідний ідентифікатор буде
com.idsoftware.wad
- Замінити
EXTENSION
з розширенням імені файлу (без крапки), наприклад: wad
.
Це мінімальний код, необхідний для запуску служб, щоб прийняти ваш новий UTI. Ви також можете додати такі додаткові властивості:
UTTypeConformsTo
- Див. Додаток нижче.
UTTypeDescription
- Опис, видимий користувачеві, який відображатиметься в Finder.
UTTypeIconFile
- Якщо ви додасте
файл зображення зображення Apple Icon у папку " Зміст / ресурси" у вашій додатковій манекені, а в цьому властивості додасте його ім'я файлу, тоді файли, які мають нове розширення назви файлів, використовуватимуть цей значок.
UTTypeReferenceURL
- URL-адреса довідкового документа, що описує цей тип.
Ось повний приклад, що показує всі необов’язкові властивості:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>com.idsoftware.wad</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>wad</string>
</array>
</dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Doom WAD file</string>
<key>UTTypeIconFile</key>
<string>DoomWAD.icns</string>
<key>UTTypeReferenceURL</key>
<string>http://en.wikipedia.org/wiki/Doom_WAD</string>
</dict>
</array>
4. Зареєструйте свій новий UTI за допомогою служб запуску
Виконайте цю команду в Терміналі:
lsregister <PATH_TO_APP>
замінюючи <PATH_TO_APP>
шлях до вашої додаткової програми, наприклад:
lsregister ~/Desktop/MyDummyApp.app
Якщо тепер ви створили файл із новим розширенням імені файлу, а потім виберіть його у Finder та натисніть Enter, Finder повинен автоматично вибрати лише частину імені файлу, а не розширення.
Якщо ви переглядаєте вміст бази даних Launch Services:
lsregister -dump
ви повинні знайти свій новий UTI у списку:
type id: 50364
bindableKey: 12608
generation: 1
uti: com.idsoftware.wad
description: Doom WAD file
flags: imported active apple-internal untrusted
icon: DoomWAD.icns
conforms to: public.data
tags: .wad
Якщо ви хочете пізніше скасувати реєстрацію свого нового UTI, передайте цей -u
параметр на lsregister
:
lsregister -u ~/Desktop/MyDummyApp.app
Додаток: Ієрархія та відповідність UTI
OS X оголошує ієрархію UTI, які перераховані тут:
Оголошені системою уніфіковані ідентифікатори типу .
Ось декілька UTI в ієрархії:
public.content
public.text
public.rtf
public.html
public.xml
public.plain-text
public.source-code
public.c-source
public.c-header
com.sun.java-source
public.image
public.jpeg
public.tiff
public.png
public.audiovisual-content
public.movie
public.audio
Кожен UTI "відповідає" своєму батьківському UTI:
Наприклад, УИП public.html
, який визначає HTML текст, відповідає до текстового ідентифікатором базового, public.text
. У цьому випадку відповідність дозволяє програмам, які можуть відкривати загальні текстові файли, ідентифікувати HTML-файли як такі, які вони також можуть відкривати. ( ref )
Створюючи новий UTI, корисно встановити UTTypeConformsTo
властивість для одного з існуючих UTI.
Наприклад, якщо ваш новий ІМП типу вихідного коду, то ви повинні встановити UTTypeConformsTo
властивість public.source-code
, так що він може бути відкритий з допомогою будь-яких додатків , які можуть відкривати
public.source-code
або public.plain-text
або public.text
файли.
CFBundleTypeExtensions
є застарілим ключем, який застарів у OS X 10.5 . Кращим методом з 2007 року є оголошення нових ІПС, про які було сказано тут і описано у моїй відповіді .