Opções alternativas de distribuição de extensões

Todas as extensões do Chrome precisam ser distribuídas diretamente pela Chrome Web Store ou usando os mecanismos descritos abaixo. O não cumprimento de um desses métodos de distribuição constitui uma violação da política de extensões do Chrome e pode resultar na sinalização da extensão e/ou do software que o distribui como software indesejado.

Normalmente, os usuários instalam extensões da Chrome Web Store, mas às vezes você pode querer que uma extensão seja instalada de outros meios. Veja dois casos típicos:

  • Uma extensão está associada a outro software e precisa ser instalada sempre que o usuário instalar esse outro software.
  • Um administrador de rede quer instalar as mesmas extensões em toda a organização.

Uma extensão que não é instalada pela Chrome Web Store é conhecida como extensão externa. Para desenvolvedores que querem distribuir uma extensão como parte do processo de instalação de outro software ou para administradores de rede que querem distribuir uma extensão em toda a organização, o Google Chrome é compatível com os seguintes métodos de instalação de extensões:

  • Usando um arquivo JSON de preferências (somente para Mac OS X e Linux)
  • Como usar o Registro do Windows (somente para Windows)

Ambas as formas oferecem suporte à instalação de uma extensão hospedada em um update_URL. No Windows e no Mac, o update_URL precisa apontar para a Chrome Web Store em que a extensão precisa estar hospedada.

O arquivo de preferências no Linux pode apontar para o próprio servidor em que você hospeda a extensão. O arquivo JSON de preferências também é compatível com a instalação de uma extensão de um arquivo de extensão .crx no computador Linux do usuário.

Antes de começar

Primeiro, publish a extensão na Chrome Web Store ou empacote um arquivo .crx e verifique se ela é instalada corretamente.

Se a instalação for feita com um URL de atualização, verifique se a extensão está hospedada corretamente.

Antes de editar o arquivo de preferências ou o registro, observe o seguinte:

  • O local pretendido do arquivo .crx da extensão ou o URL de atualização do qual ele é veiculado
  • A versão da extensão (do arquivo de manifesto ou da página chrome://extensions)
  • O ID da extensão (da página chrome://extensions em que você carregou a extensão compactada)

Os exemplos a seguir pressupõem que a versão é 1.0 e o ID é aaaaaaaaaabbbbbbbbbbcccccccccc.

Como usar um arquivo de preferências

  1. Se você estiver instalando a extensão de um arquivo no Linux, disponibilize o arquivo de extensão .crx para a máquina em que quer instalar a extensão. Copie-a para um diretório local ou para um compartilhamento de rede, por exemplo, \\server\share\extension.crx ou /home/share/extension.crx.
  2. Crie um arquivo com o seguinte nome em uma das pastas listadas abaixo: aaaaaaaaaabbbbbbbbbbcccccccccc.json, em que o nome do arquivo (sem a extensão) corresponde ao ID da extensão. A localização depende do sistema operacional.

    Mac OS X:

    Para um usuário específico: ~USERNAME/Library/Application Support/Google/Chrome/External Extensions/ Para todos os usuários: /Library/Application Support/Google/Chrome/External Extensions/

    O arquivo de extensão externa de todos os usuários será somente leitura se todos os diretórios no caminho forem de propriedade do usuário root, tiverem o grupo admin ou wheel e não forem graváveis globalmente. O caminho também não pode ter links simbólicos. Essas restrições evitam que um usuário sem privilégios faça com que extensões sejam instaladas para todos os usuários. Consulte a solução de problemas para mais detalhes.

    Linux:

    /opt/google/chrome/extensions/

    /usr/share/google-chrome/extensions/

    Observação:use chmod, se necessário, para garantir que os arquivos aaaaaaaaaabbbbbbbbbbcccccccccc.json sejam legíveis.

  3. Somente Linux: se você estiver instalando a partir de um arquivo, especifique o local e a versão da extensão com campos chamados "external_crx" e "external_version" no arquivo criado acima.

    • Exemplos
    • json { "external_crx": "/home/share/extension.crx", "external_version": "1.0" }
    • Observação:é necessário fazer o escape de cada \` character in the location. For example,\server\share\extension.crxwould be"\\server\share\extension.crx"`.
    • Se você estiver instalando a partir de um URL de atualização, especifique o URL de atualização da extensão com o nome do campo "external_update_url".
    • Exemplo de instalação a partir de um arquivo .crx local (somente Linux):
    • json { "external_update_url": "http://myhost.com/mytestextension/updates.xml" }
    • Exemplo de instalação a partir da Chrome Webstore (Mac e Linux):
    • json { "external_update_url": "https://clients2.google.com/service/update2/crx" }
    • Se você quiser instalar a extensão apenas em algumas localidades do navegador, liste as localidades compatíveis no nome do campo "supported_locale". A localidade pode especificar uma localidade mãe, como "en". Nesse caso, a extensão vai ser instalada para todas as localidades em inglês, como "en-US", "en-GB" etc. Se for selecionada outra localidade do navegador que não oferece suporte à extensão, as extensões externas vão ser desinstaladas. Se a lista "supported_locales" estiver ausente, a extensão será instalada para qualquer localidade.
    • Exemplos
    • json { "external_update_url": "https://clients2.google.com/service/update2/crx", "supported_locales": [ "en", "fr", "de" ] }
  4. Salve o arquivo JSON.

  5. Abra o Google Chrome e acesse chrome://extensions. Você verá a extensão listada.

Solução de problemas de permissões do Mac OS

No Mac OS, os arquivos de extensões externas para todos os usuários só serão lidos se as permissões do sistema de arquivos impedirem que usuários sem privilégios façam alterações. Se você não vir extensões externas instaladas quando o Chrome for iniciado, pode haver um problema de permissão com os arquivos de preferências de extensões externas. Para ver se esse é o problema, siga estas etapas:

  1. Inicie o programa Console. Você pode encontrá-lo em /Aplicativos/Utilitários/Console.
  2. Se o ícone mais à esquerda do Console for "Show Log List", clique nele. Uma segunda coluna aparece à esquerda.
  3. Clique em "Mensagens do console" no painel esquerdo.
  4. Pesquise a string Não é possível ler extensões externas. Se houver um problema na leitura dos arquivos de extensões externas, uma mensagem de erro será exibida. Procure outra mensagem de erro diretamente acima dela, que deve explicar o problema. Por exemplo, se você vir o seguinte erro: "Path /Library/Application Support/Google/Chrome is subpropriedade by the errors group", você precisará usar chgrp ou a caixa de diálogo "Get Info" do Finder para alterar o proprietário do grupo do diretório para o grupo Administrador.
  5. Depois de corrigir o problema, reinicie o Chrome. Teste se a extensão externa está instalada. É possível que um erro de permissão impeça o Chrome de detectar outro. Se a extensão externa não tiver sido instalada, repita essas etapas até que um erro não seja exibido no aplicativo do Console.

Como usar o Registro do Windows

  1. Encontre ou crie a seguinte chave no registro:
    • Windows de 32 bits: HKEY_LOCAL_MACHINE\Software\Google\Chrome\Extensions
    • Windows de 64 bits: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Google\Chrome\Extensions
  2. Crie uma nova chave (pasta) na chave Extensões com o mesmo nome do ID da extensão (por exemplo, aaaaaaaaaabbbbbbbbbbcccccccccc).
  3. Na chave da extensão, crie uma propriedade "update_url" e defina-a com o valor "https://clients2.google.com/service/update2/crx" (aponta para o crx da extensão na Chrome Web Store):

    {
      "update_url": "https://clients2.google.com/service/update2/crx"
    }
    
  4. Abra o navegador e acesse chrome://extensions. Você verá a extensão listada.

Como atualizar e desinstalar

O Google Chrome verifica as entradas de metadados nas preferências e no registro toda vez que o navegador é iniciado e faz as alterações necessárias nas extensões externas instaladas.

Para atualizar a extensão para uma nova versão, atualize o arquivo e, em seguida, atualize a versão nas preferências ou no registro.

Para desinstalar a extensão (por exemplo, se o software for desinstalado), remova o arquivo de preferência (aaaaaaaaaabbbbbbbbbb recebareturncc.json) ou os metadados do registro.

Perguntas frequentes

Esta seção responde a perguntas comuns sobre extensões externas.

A metodologia para permitir uma "pré-instalação" ainda será compatível com o Google Chrome da versão M33 em diante?

Sim, mas apenas como uma instalação de um update_URL da Chrome Web Store, não de um caminho de arquivo local.

Posso especificar um URL como caminho para a extensão externa?

Sim, use o arquivo de preferências JSON para Mac OS X e Linux e o registry para o Windows. A extensão precisa ser hospedada conforme explicado em hospedagem. No arquivo de preferências, use a propriedade "external_update_url" para apontar para um manifesto de atualização que tenha o URL da extensão. No registro do Windows, use a propriedade "update_url".

Quais são alguns erros comuns ao instalar com o arquivo de preferências?

  • Não especificar o mesmo ID/versão listado em .crx
  • O arquivo .json (aaaaaaaaaabbbbbbbbbbcccccccccc.json) está no local incorreto ou o código especificado não corresponde ao código da extensão.
  • Erro de sintaxe no arquivo JSON (esquecer de separar as entradas por vírgula ou deixar uma vírgula à direita em algum lugar)
  • O arquivo JSON aponta para o caminho errado para .crx (ou caminho especificado, mas sem nome de arquivo)
  • Barras invertidas no caminho UNC não têm escape (por exemplo, "\\server\share\file" está errado; deveria ser "\\\\server\\share\\extension")
  • Problemas de permissão em um compartilhamento de rede

Quais são alguns erros comuns ao instalar com o registro?

  • Não especificar o mesmo ID/versão listado na Chrome Web Store
  • Chave criada no local errado no registro
  • A entrada de registro aponta para o caminho errado para o arquivo .crx na Chrome Web Store
  • Problemas de permissão em um compartilhamento de rede

Como faço para atualizar meus binários nativos e a extensão na etapa?

Antes, quando as extensões fora da loja eram compatíveis, era possível ter os binários nativos e a extensão ser atualizada na etapa de bloqueio. No entanto, as extensões hospedadas na Chrome Web Store são atualizadas pelo mecanismo de atualização do Chrome, que os desenvolvedores não controlam. Os desenvolvedores precisam ter cuidado ao atualizar extensões que têm uma dependência no binário nativo (por exemplo, extensões legadas que usam NPAPI).

E se o usuário desinstalar a extensão?

Se o usuário desinstalar a extensão pela interface, ela não será mais instalada nem atualizada em cada inicialização. Em outras palavras, a extensão externa está na lista de bloqueio.

Como saio da lista de bloqueio?

Se o usuário desinstalar sua extensão, respeite essa decisão. No entanto, se você (o desenvolvedor) desinstalar acidentalmente sua extensão pela interface, poderá remover a tag da lista de bloqueio instalando a extensão normalmente na interface e desinstalando-a.