Як змусити OS X розпізнавати нові розширення файлів?


19

У Finder.app ви можете натиснути, Enterщоб відредагувати назву вибраного файлу чи папки.

OS X автоматично вибере лише частину імені файлу, а не розширення:

Це дуже корисно, оскільки таким чином ви можете просто почати вводити нове ім’я, не турбуючись про випадкову зміну розширення файлу.

Однак це, здається, працює лише для "відомих" типів файлів. Якщо ви спробуєте його з невідомим розширенням, буде вибрано все ім'я файлу (включаючи розширення):

Я спробував скласти карту програми, яка може відкрити всі .barфайли за допомогою + I→ «Змінити всі», але все одно отримую описану вище поведінку.

Де зберігається список "відомих" типів файлів? Чи є спосіб змусити OS X розпізнавати нові типи файлів?

Відповіді:


7

Ця публікація SuperUser працювала для мене:

Вам потрібно перейти до програми, яку ви хочете використовувати для відкриття цих файлів та відредагувати пакет. Клацніть правою кнопкою миші програму, щоб обробляти ці розширення файлів і виберіть Показати зміст пакета . Перейдіть до Contentsта редагуйте Info.plist. Можливо, вам знадобиться Редактор списку властивостей , який є частиною інструментів розробника Apple. Якщо вам пощастить, це у форматі XML. Відредагуйте цей файл CFBundleDocumentTypesі додайте запис до потрібного розширення.

Я використовував TextEdit як додаток за замовчуванням для відкриття .barфайлів. Єдине, що я зробив по-іншому, це змінити XML, який перейшов у TextEdit Info.plist:

    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>bar</string>
        </array>
        <key>CFBundleTypeIconFile</key>
        <string>BarDocument</string>
        <key>CFBundleTypeName</key>
        <string>Bar Document</string>
        <key>CFBundleTypeRole</key>
        <string>Document</string>
    </dict>

… А потім я використав LSRefresh.app для оновлення TextEdit в базі даних служб запуску. Тоді це спрацювало, як ви запропонували, хоча, ймовірно, порушить кодову підпис Textedit (та будь-яку іншу підписану програму) на Lion.


1
CFBundleTypeExtensionsє застарілим ключем, який застарів у OS X 10.5 . Кращим методом з 2007 року є оголошення нових ІПС, про які було сказано тут і описано у моїй відповіді .
TachyonVortex

6
Вибачте, я маю це спростувати, бо це погана порада. Мало того, що недобре підробляти пакет програм (ризикуючи химерними побічними ефектами чи гірше), але також може повністю зруйнувати копію програми. Ви зауважуєте, що цей процес недійсний для підпису коду, але не вказує, що у версіях macOS, що підтримують пісочницю (10.7+), додаток з
Боб

1
@binarybob. Що я не розумію, це чому просто не клацнути правою кнопкою миші файл xxx.barі вибрати open with?
Печер'є

@Bob, що таке стендбокс для додатків?
Печер'є

@Pacerier App Sandboxing - це функція безпеки macOS, яка повністю ізолює додатки від системи та один від одного, із дуже коротким списком "прав", який детально визначає, які програми можуть робити. Цей список прав вкладається в підпис коду та перевіряється щоразу, коли програма запущена, гарантуючи, що можливості додатків не можуть бути підроблені ні випадково, ні нападом. Дивіться цей документ для технічного пояснення.
Боб

28

ПТІ та послуги запуску

Де зберігається список "відомих" типів файлів?

Офіційний термін для "типів файлів" - це Уніфіковані ідентифікатори типів (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файли.


Чи є спосіб вказати редактор, асоційований з розширенням файлу?
gr4nt3d

0

Виконайте такі дії:

  1. Виберіть файл із нерозпізнаним розширенням (скажімо, .txt).

  2. Клацніть правою кнопкою миші та виберіть Get Infoабо використайте комбінацію клавіш Commandiдля відображення інформаційного вікна.

  3. Клацніть на індикатор розкриття, окрім Open with: для відкриття детального перегляду. Виберіть потрібний додаток зі спадного меню. Це пов'язує документ із вибраною програмою (Наприклад, TextEdit).

  4. Натисніть на ... Змінити Всі кнопки. Спочатку буде показано діалогове вікно з проханням підтвердити свій намір і зв'язати всі .txtдокументи, які потрібно відкрити разом з TextEdit, а розширення не буде вибрано, коли ви натиснете на повернення на ім'я документа.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.