Где Mac OS X хранит информацию об ассоциации файлов?

40711
Mehrdad Afshari

Я знаю, что есть панель системных настроек, чтобы вручную изменять ассоциации файлов в Mac OS X Leopard. Тем не менее, мне любопытно, где Leopard на самом деле хранит эту информацию?

Меня не интересуют способы их изменения. Я хочу знать файл конфигурации или базу данных (например, реестр в Windows), где хранятся эти сопоставления.

19
некоторые, пожалуйста, пометите это тегами "mac" и "osx" (эти теги используются более широко) Thilo 14 лет назад 0
По этому поводу обсуждалась мета-версия, но я не мог определить, какой тег победит. Mehrdad Afshari 14 лет назад 0
Полагаю, лучший способ определить победителя - посмотреть на цифры. Популярность превосходит таксономию на сайтах социальных сетей. Thilo 14 лет назад 0
Смотрите также: http://superuser.com/questions/17761/file-association-for-editing-on-a-mac (немного отличается, но также может быть полезным). Jonathan Leffler 14 лет назад 0

5 ответов на вопрос

16
Doug Harris

OS X использует систему «по умолчанию» - вот хорошая статья с множеством примеров. Файлы хранятся в ~ / Library / Preferences, но лучше манипулировать с помощью команды "defaults", а не редактировать списки напрямую.

Файловые ассоциации хранятся в домене com.apple.LaunchServices. По приведенной выше ссылке вы можете увидеть список с помощью этой команды:

defaults read com.apple.LaunchServices | grep -v LSBundleLocator 

Более подробную информацию о Launch Services можно найти в Руководстве по программированию Launch Services от Apple.

12
toolbear74

@ Дуг Харрис ответ только частично правильно. Система по умолчанию хранит ваши локальные дополнения или переопределения для ассоциаций файлов. Однако OS X поставляется с некоторыми стандартными общесистемными ассоциациями.

Если вы запустите, lsregister -dumpвы увидите, что вызывает Launch Services CoreTypesи ассоциации, предоставляемые приложениями, которые он находит.

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Versions/Current/Support/lsregister -dump 

Я не полностью отсканировал вывод. Там могут быть другие источники, указанные в этом дампе, но большое количество этих типов происходят из /System/Library/CoreServices/CoreTypes.bundle. Там, где перечислены типы, может быть простой текстовый файл или файл plist. Я полагаю, что ассоциации связаны со сканированием содержимого * .app в известных местоположениях приложений. Вот где Launch Services понимает, что TextWrangler является редактором многих типов файлов:

-------------------------------------------------------------------------------- bundle id: 10928 path: /Applications/TextWrangler.app name: TextWrangler identifier: com.barebones.textwrangler (0x8000008d) ... library items: -------------------------------------------------------- claim id: 20216 name: TextWrangler text document rank: Default roles: Editor  flags: relative-icon-path  icon: Contents/Resources/TextWranglerTextDoc.icns bindings: .a, .asm, .asp, .bashrc, .c, .c++, .cc, .cfm, .conf, .cp, .cpp, .cshrc, .css, .cxx, .equ, .f, .f77, .for, .ftn, .h, .h++, .hpp, .htm, .html, .inc, .j, .java, .js, .jsp, .log, .m, .mm, .p, .pas, .pch, .pch++, .php, .php3, .pl, .plist, .plx, .pm, .ppu, .r, .rb, .rez, .rhtml, .rss, .s, .sql, .shtm, .shtml, .tcl, .tcshrc, .text, .txt, .wml, .xhtml, .xml, .xsl, .xslt, .yaml, 'TEXT' ... 
FYI `-bash: lsregister: команда не найдена` в Маверикс Slipp D. Thompson 10 лет назад 1
@ SlippD. Томпсон внимательно посмотри на следующую строку, там указан путь. Dmitry Ginzburg 9 лет назад 1
9
NSGod

Извините, этот вопрос старый, но ответ действительно неправильный.

Как уже упоминалось, Дуг Харрис ответил лишь частично правильно.

Launch Services Database файл, где все информации для всех известных приложений и типов документов, которые они могут обрабатывать хранится, находится в следующем месте:

Лев:

/private/var/folders/**/**/-Caches-/com.apple.LaunchServices-034501.csstore

Снежный барс:

/private/var/folders/**/**/-Caches-/com.apple.LaunchServices-025501.csstore

Leopard:

/Library/Caches/com.apple.LaunchServices-023501.csstore

В этой /private/var/folders/папке хранятся «безопасные» кэши и временные папки для каждого пользователя. ** в пути, показанном выше, будет чем-то похожим /dl/dlXWtS5WH9SNboPxxrDIyE+++TI/или другой непонятной последовательностью символов для предотвращения угадывания.

Обратите внимание, что имя com.apple.LaunchServices-025501.csstoreсостоит из идентификатора пользователя (мой 501) добавлен к -025суффиксу, который является уникальным для Snow Leopard. (В каждой версии OS X Apple имеет тенденцию менять отличительный суффикс, используемый для предотвращения проблем совместимости между различными версиями OS X. Вы заметите, что Leopard использовал -023). Лев использует -034суффикс.

El Capitan 10.11.4: `$ TMPDIR /../ 0 / com.apple.LaunchServices-134 $ (id -u) .csstore` rob mayoff 7 лет назад 2
Но это временные папки. Те не могут быть там, где он хранится централизованно. Melab 7 лет назад 0
@Melab: у каждого приложения в системе Mac есть файл `Info.plist` (https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/ConfigFiles.html), в котором описаны его возможности. , Launch Services собирает всю эту информацию динамически для создания базы данных, упомянутой выше. Если файл базы данных был удален, Launch Services (в частности, инструмент `lsregister` - http://ss64.com/osx/lsregister.html) может воссоздать его. NSGod 7 лет назад 0
На самом деле, просто по пути, похоже, что он хранится _alongside_ во временных папках (`..` означает" подняться на уровень "). SilverWolf 6 лет назад 0
3
Josh Hunt

Очень просто! Просто это не в самом очевидном месте:

  • Щелкните правой кнопкой мыши файл, для которого вы хотите изменить ассоциацию, и выберите « Получить информацию » (или просто выберите и нажмите Command+I .
  • Перейдите к « Opens With » (вам может потребоваться щелкнуть стрелку рядом с ним, чтобы развернуть его) и выберите другую программу из выпадающего списка.
  • Нажмите кнопку « Изменить все ... », чтобы изменить это сопоставление файлов для всех файлов с одинаковым расширением в вашей системе.

Вы также можете выйти и установить предварительную панель RCDefaultApp, чтобы изменить все ассоциации файлов в одном месте.

Вы читали вопрос? Речь шла о том, где OS X хранит информацию, а не о том, как изменить ассоциации. Jonik 14 лет назад 3
Да, но знание того, как их изменить, также помогает. Как будто это помогло мне ... @joshhunt: может быть, если вы прямо заявили, что материал Get Info находится в Finder с выбранным файлом. (Просто пришлось отменить одно приложение, захватив файлы другого - это помогло.) Jonathan Leffler 14 лет назад 1
@LauriRanta, вы абсолютно правы, на самом деле после того, как я опубликовал это, я хотел удалить его, но не смог найти! ocodo 11 лет назад 0
-1
Nate

~/Library/Preferences/com.apple.LaunchServices.plist

Похожие вопросы