21

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

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

5 ответов5

17

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

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

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

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

12

@ Дуг Харрис ответ только частично правильно. Система по умолчанию хранит ваши локальные дополнения или переопределения для ассоциаций файлов. Однако 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'
    ...
10

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

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

Файл базы данных 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 .

3

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

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

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

-1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .