В Finder.app вы можете нажать, Enterчтобы отредактировать имя выбранного в данный момент файла или папки.
OS X автоматически выберет только часть имени файла, а не расширение:
Это очень полезно, потому что таким образом вы можете просто начать вводить новое имя, не беспокоясь о случайном изменении расширения файла.
Однако кажется, что это работает только для «известных» типов файлов. Если вы попробуете это с неизвестным расширением, будет выбрано полное имя файла (включая расширение):
Я попытался сопоставить приложение, которое может открыть все .bar
файлы через ⌘+ I→ «Изменить все», но я все еще получаю поведение, описанное выше.
Где хранится список «известных» типов файлов? Есть ли способ заставить OS X распознавать новые типы файлов?
CFBundleTypeExtensions
является устаревшим ключом, который стал устаревшим в OS X 10.5 . Предпочтительным методом с 2007 года является объявление новых UTI, как указано здесь и описано в моем ответе .xxx.bar
и не выбратьopen with
?ИМП и стартовые услуги
Официальный термин для «типов файлов» - это Унифицированные идентификаторы типов (UTI), а база данных UTI поддерживается Launch Services .
Используя Терминал , вы можете просматривать содержимое базы данных Launch Services с помощью
lsregister
инструмента, который хранится по адресу:Вместо того, чтобы указывать этот длинный путь каждый раз, когда вы хотите запустить
lsregister
, вы можете временно добавить его каталог в вашPATH
:и тогда вы можете запустить
lsregister
, просто введя:Чтобы просмотреть содержимое базы данных Launch Services:
Объявление новых ИМП
Эта статья Apple «Объявление новых унифицированных идентификаторов типов» содержит полезную информацию о том, как это сделать. Вот полный процесс:
1. Создайте фиктивное приложение
Создайте фиктивное приложение для регистрации в Launch Services:
2. Откройте его файл Info.plist
3. Добавьте свой новый UTI
На выбор есть два ключа:
UTExportedTypeDeclarations
- для ваших собственных расширений файлов.UTImportedTypeDeclarations
- для расширений файлов, которые уже существуют, но не распознаются OS X.Выберите ключ, который наиболее подходит для ваших нужд.
Затем в файле Info.plist перед последними двумя строками (
</dict></plist>
) добавьте этот код:внести следующие изменения:
KEY
выбранным вами ключом (или,UTExportedTypeDeclarations
илиUTImportedTypeDeclarations
).IDENTIFIER
подходящим идентификатором обратного DNS:com.mycompany.mytype
com.idsoftware.wad
EXTENSION
с расширением имени файла (без точки), например:wad
.Это минимальный код, необходимый для запуска служб, чтобы принять ваш новый UTI. Вы также можете добавить следующие дополнительные свойства:
UTTypeConformsTo
- См. Приложение ниже.UTTypeDescription
- Пользовательское описание, которое будет отображаться в Finder.UTTypeIconFile
- Если вы добавите файл изображения значка Apple в папку « Содержание» / «Ресурсы » в приложении-заглушке и добавите его имя файла в это свойство, то файлы с новым расширением имени файла будут использовать этот значок.UTTypeReferenceURL
- URL справочного документа, описывающего этот тип.Вот полный пример, показывающий все дополнительные свойства:
4. Зарегистрируйте свой новый UTI в Launch Services.
Запустите эту команду в Терминале:
замена
<PATH_TO_APP>
на путь к вашему фиктивному приложению, например:Если вы сейчас создадите файл с новым расширением имени файла, а затем выберите его в Finder и нажмете Enter, Finder должен автоматически выбрать только часть имени файла, а не расширение.
Если вы просматриваете содержимое базы данных Launch Services:
Вы должны найти свой новый UTI в списке:
Если позже вы захотите отменить регистрацию вашего нового UTI, передайте
-u
опциюlsregister
:Приложение: иерархия и соответствие UTI
OS X объявляет иерархию 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:
При создании нового UTI рекомендуется установить
UTTypeConformsTo
свойство для одного из существующих UTI.Например, если ваш новый ИМП типа исходного кода, то вы должны установить
UTTypeConformsTo
свойствоpublic.source-code
, так что он может быть открыт с помощью любых приложений , которые могут открыватьpublic.source-code
илиpublic.plain-text
илиpublic.text
файлы.источник
Следуй этим шагам:
Выберите файл с нераспознанным расширением (скажем,
.txt
).Щелкните правой кнопкой мыши и выберите
Get Info
или используйте сочетание клавиш Commandiдля отображения информационного окна.Нажмите на индикатор раскрытия рядом с Открыть с помощью:, чтобы открыть подробный вид. Выберите нужное приложение из выпадающего списка. Это свяжет документ с выбранным приложением (например, TextEdit).
Нажмите на ... Изменить Все кнопки. Сначала отобразится диалоговое окно с просьбой подтвердить ваше намерение, и все
.txt
документы будут открыты с помощью TextEdit, а расширение не будет выбрано, когда вы нажмете return на имени документа.источник