Queremos que as extensões e os aplicativos sejam atualizados automaticamente por alguns dos mesmos motivos do próprio Google Chrome: incorporar correções de bugs e de segurança, adicionar novos recursos ou melhorias de desempenho e melhorar do Google Cloud.
Se você publicar usando o Painel de controle do desenvolvedor do Chrome, ignore esta página. Chrome para Web Os envios à loja aprovados na visualização são disponibilizados automaticamente nas informações do item da Chrome Web Store e implantados para os usuários finais.
Se você estiver hospedando um arquivo CRX em um servidor da Web e usando políticas corporativas para enviá-lo por push ao dispositivos, continue lendo. Leia também Hosting e Empacotamento.
Antes, quando extensões externas à 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 não atualizados pelo mecanismo de atualização do Chrome, que os desenvolvedores não controlam. Os desenvolvedores de extensões precisam tenha cuidado ao atualizar extensões que dependem do binário nativo (por exemplo, extensões legadas usando NPAPI).
Visão geral
- Um manifesto pode conter um "update_url" , apontando para um local para fazer verificações de atualização.
- O conteúdo retornado por uma verificação de atualização é um documento XML de manifesto de atualizações listando o mais recente de uma extensão.
Em intervalos de algumas horas, o navegador verifica se alguma extensão ou app instalado tem um URL de atualização. Para
cada um, ele faz uma solicitação a esse URL procurando um arquivo XML de manifesto de atualização. Se a atualização
manifesto menciona uma versão mais recente do que a instalada, o navegador faz o download e
instala a nova versão. Como acontece com as atualizações manuais, o novo arquivo .crx
precisa ser assinado com a mesma
como a versão instalada atualmente.
URL de atualização
Se você estiver hospedando sua própria extensão ou app, precisará adicionar o "update_url" à sua
manifest.json
da seguinte forma:
{
"name": "My extension",
...
"update_url": "http://myhost.com/mytestextension/updates.xml",
...
}
Atualizar o manifesto
O manifesto de atualização retornado pelo servidor é um documento XML parecido com este: (os destaques indicam as partes que devem ser modificadas):
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
<updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
</app>
</gupdate>
Esse formato XML é emprestado o usado pelo Omaha, a infraestrutura de atualização do Google. Consulte
http://code.google.com/p/omaha/ para mais detalhes. O sistema de extensões usa o seguinte
para os elementos
- appid
A extensão ou ID do app, gerado com base em um hash da chave pública, conforme descrito em Embalagem. Para encontrar o ID de uma extensão ou aplicativo do Chrome, acesse a página "Extensões" (chrome://extensions).
No entanto, os aplicativos hospedados não estão listados na página "Extensões". Você pode encontrar o ID de qualquer aplicativo usando as seguintes etapas:
- Abra o app. Você pode fazer isso clicando em seu ícone na página Nova guia.
- Abra o Console JavaScript. Você pode fazer isso clicando no ícone de chave inglesa e escolhendo Ferramentas > Console JavaScript.
- Digite a seguinte expressão no Console JavaScript:
chrome.app.getDetails().id
. A console mostra o ID do app como uma string entre aspas.
- codebase
Um URL para o arquivo
.crx
.- version
Usado pelo cliente para determinar se ele deve fazer o download do arquivo
.crx
especificado pelocodebase
. Ele deve corresponder ao valor de "version" no arquivomanifest.json
do arquivo.crx
.
O arquivo XML do manifesto de atualização pode conter informações sobre várias extensões, incluindo várias
Teste
A frequência padrão de verificação de atualização é de várias horas, mas é possível forçar uma atualização usando a Botão Atualizar extensões agora da página "Extensões".
Uso avançado: parâmetros de solicitação
O mecanismo básico de atualização automática foi projetado para tornar o trabalho do lado do servidor tão fácil quanto apenas descartar uma arquivo XML estático em qualquer servidor da Web simples, como Apache, e atualizando esse arquivo XML à medida que novas versões das suas extensões.
Desenvolvedores mais avançados podem se beneficiar da adição de parâmetros ao solicitação para que o manifesto de atualização indique o ID e a versão da extensão. Em seguida, eles podem usar a mesma URL de atualização para todas as extensões, direcionando para um URL que executa um código dinâmico do servidor de um arquivo XML estático.
O formato dos parâmetros da solicitação é:
?x=_<extension_data>_
Em que _<extension_data>_
é uma string codificada para URL no formato:
_id=<id>_&v=_<version>_
Por exemplo, digamos que você tenha duas extensões, ambas apontando para o mesmo URL de atualização
(http://test.com/extension_updates.php
):
- Extensão 1
- ID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- Versão: "1.1"
- Extensão 2
- Código: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
- Versão: "0.4"
A solicitação para atualizar cada extensão individual seria:
http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
http://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
Várias extensões podem ser listadas em uma única solicitação para cada URL de atualização exclusivo. Para os itens acima Por exemplo, se um usuário tiver as duas extensões instaladas, as duas solicitações serão mescladas em uma solicitação única:
http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
Se o número de extensões instaladas que usam o mesmo URL de atualização for grande o suficiente para que uma solicitação GET URL for muito longo (mais de 2.000 caracteres aproximadamente), a verificação de atualização emitirá solicitações GET adicionais conforme necessários.
Uso avançado: versão mínima do navegador
À medida que adicionamos mais APIs ao sistema de extensões, é possível que você queira lançar uma versão
de uma extensão ou aplicativo que funcionará somente com as versões mais recentes do navegador. Embora o Google
O Chrome é atualizado automaticamente. Pode levar alguns dias até que a maior parte da base de usuários
atualizados para todas as novas versões. Para garantir que determinada atualização seja aplicada apenas ao Google Chrome
versões iguais ou superiores a uma versão específica, adicione a tag "prodversionmin" para o
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
<updatecheck codebase='http://myhost.com/mytestextension/mte_v2.crx' version='2.0' prodversionmin='3.0.193.0'/>
</app>
</gupdate>
Isso garante que os usuários só serão atualizados automaticamente para a versão 2 se estiverem executando o Google Chrome. 3.0.193.0 ou superior.