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

24

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

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

Мехрдад Афшари
источник
некоторые, пожалуйста, пометите это тегами «mac» и «osx» (эти теги используются более широко)
Thilo
По этому вопросу обсуждалась мета-версия, но я не мог определить, какой тег победит.
Мердад Афшари
Полагаю, лучший способ определить победителя - посмотреть на цифры. Популярность превосходит таксономию на сайтах социальных сетей.
Тило
См. Также: superuser.com/questions/17761/… (немного отличается, но также может быть полезным).
Джонатан Леффлер

Ответы:

12

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

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

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

Лев:

/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суффикс.

NSGod
источник
2
Эль-Капитан 10.11.4:$TMPDIR/../0/com.apple.LaunchServices-134$(id -u).csstore
Роб Майофф
Но это временные папки. Те не могут быть там, где он хранится централизованно.
Мелаб
1
@Melab. Каждое приложение в системе Mac имеет Info.plistфайл ( developer.apple.com/library/mac/documentation/MacOSX/Conceptual/… ), в котором описываются его возможности. Launch Services собирает всю эту информацию динамически для создания базы данных, упомянутой выше. Если файл базы данных был удален, Launch Services (в частности, lsregisterинструмент - ss64.com/osx/lsregister.html ) может воссоздать его.
NSGod
На самом деле, просто по пути, похоже, что он хранится вместе с временными папками ( ..означает «подняться на уровень»).
Серебряный Волк - Восстановить Монику
18

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

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

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

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

Даг Харрис
источник
15

@ Дуг Харрис ответ только частично правильно. Система по умолчанию хранит ваши локальные дополнения или переопределения для ассоциаций файлов. Однако 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'
    ...
toolbear74
источник
1
К вашему сведению, -bash: lsregister: command not foundМаверикс
Слипп Д. Томпсон,
2
@ SlippD. Томпсон внимательно посмотри на следующую строку, там указан путь.
Дмитрий Гинзбург
2

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

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

введите описание изображения здесь

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

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