it-swarm-pt.com

Onde o Mac OS X armazena informações de associação de arquivos?

Sei que existe um painel de preferências do sistema para modificar manualmente as associações de arquivos no Mac OS X Leopard. No entanto, estou curioso para saber onde o Leopard realmente armazena essas informações.

Não estou interessado em métodos para alterá-los. Quero conhecer o arquivo de configuração ou o banco de dados (como o registro no Windows) em que esses mapeamentos estão armazenados.

25
Mehrdad Afshari

Desculpe, esta pergunta é antiga, mas a resposta está realmente errada.

Como mencionado, a resposta de Doug Harris está apenas parcialmente correta.

O arquivo Launch Services Database, que é o local onde todos das informações para todos aplicativos conhecidos e os tipos de documentos que eles podem manipular são armazenados, é armazenado. localizado no seguinte local:

Leão:

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

Leopardo da neve:

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

Leopardo:

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

O /private/var/folders/ pasta é onde os caches "seguros" e as pastas temporárias de cada usuário são armazenados. Os ** no caminho mostrado acima serão algo como /dl/dlXWtS5WH9SNboPxxrDIyE+++TI/, ou outra sequência de caracteres obscura para evitar adivinhações.

Observe que o nome com.Apple.LaunchServices-025501.csstore é composto pelo ID do usuário (o meu é 501) anexado ao -025 sufixo, exclusivo do Snow Leopard. (Em cada versão do OS X, Apple tende a alterar o sufixo distintivo usado para evitar problemas de compatibilidade entre diferentes versões do OS X. Você notará que o Leopard usou -023). Lion está usando o -034 sufixo.

13
NSGod

O OS X usa um sistema "padrão" - aqui está um bom artigo com muitos exemplos. Os arquivos são armazenados em ~/Library/Preferences, mas é melhor manipular com o comando "default" em vez de editar as listas diretamente.

Associações de arquivo são armazenadas no domínio com.Apple.LaunchServices. No link acima, você pode ver a lista com este comando:

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

Muito mais informações sobre os Serviços de Lançamento, especificamente, podem ser encontradas no Guia de Programação dos Serviços de Lançamento da Apple

18
Doug Harris

A resposta de @Doug Harris está apenas parcialmente correta. O sistema padrão armazena suas adições ou substituições locais nas associações de arquivos. No entanto, o OS X vem com algumas associações padrão de todo o sistema.

Se você executar lsregister -dump você verá o que os Serviços de Inicialização chamam CoreTypes e as associações fornecidas pelos aplicativos encontrados.

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

Não digitalizei exaustivamente a saída. Pode haver outras fontes indicadas nesse despejo, mas um grande número desses tipos vem de /System/Library/CoreServices/CoreTypes.bundle. Pode haver um arquivo de texto simples ou plist onde os tipos são enumerados. As associações que acredito vêm da digitalização do conteúdo de * .app em locais de aplicativos conhecidos. Aqui é onde o Launch Services entende que o TextWrangler é um editor de vários tipos de arquivos:

--------------------------------------------------------------------------------
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'
    ...
15
toolbear74

Mole-mole! É que não está no lugar mais óbvio:

  • Clique com o botão direito do mouse no arquivo para o qual deseja alterar a associação e selecione " Obter informações " (ou apenas selecione e pressione Command+I.
  • Vá para " Abre com " (pode ser necessário clicar na seta ao lado para expandi-la) e selecionar outro programa na caixa suspensa.
  • Clique no botão " Alterar tudo ... " para alterar essa associação de arquivo para todos os arquivos da mesma extensão no seu sistema.

enter image description here

Você também pode instalar e instalar RCDefaultApp prefpane para modificar todas as associações de arquivos em um único local.

2
Josh Hunt