Automatyczna aktualizacja

Chcemy, aby rozszerzenia i aplikacje były automatycznie aktualizowane z tych samych powodów co sama przeglądarka Google Chrome: dodawać błędy i poprawki zabezpieczeń, dodawać nowe funkcje lub ulepszenia wydajności za pomocą interfejsu API.

Jeśli publikujesz za pomocą panelu dewelopera Chrome, zignoruj tę stronę. Chrome w przeglądarce Zgłoszenia w sklepie, które przeszły weryfikację, są automatycznie udostępniane na stronie produktu w Chrome Web Store i wdrażane użytkownikom.

Jeśli hostujesz plik CRX na serwerze WWW i przekazujesz go do zarządzanych za pomocą zasad korporacyjnych na urządzeniach mobilnych, czytaj dalej. Zapoznaj się też z artykułami Hosting i Pakowanie.

Wcześniej, gdy obsługiwane były rozszerzenia spoza sklepu, można było używać natywnych plików binarnych rozszerzenie zostało zaktualizowane na etapie blokowania. Jednak rozszerzenia hostowane w Chrome Web Store są aktualizowane przy użyciu mechanizmu aktualizacji Chrome, nad którym programiści nie mają kontroli. Programiści rozszerzeń powinni zachowaj ostrożność podczas aktualizowania rozszerzeń zależnych od natywnego pliku binarnego (np. starszego typu rozszerzeń za pomocą interfejsu NPAPI).

Omówienie

  • Plik manifestu może zawierać parametr „update_url” wskazujący lokalizację sprawdzania dostępności aktualizacji.
  • Treść zwracana przez sprawdzanie dostępności aktualizacji to dokument XML pliku manifestu aktualizacji zawierający najnowsze wersji rozszerzenia.

Przeglądarka co kilka godzin sprawdza, czy zainstalowane rozszerzenia lub aplikacje mają adres URL aktualizacji. Dla: wysyła do danego adresu URL żądanie w poszukiwaniu pliku XML manifestu aktualizacji. Jeśli aktualizacja w pliku manifestu jest wskazana wersja, która jest nowsza od zainstalowanej, przeglądarka pobiera zainstaluje nową wersję. Tak jak w przypadku aktualizacji ręcznych, nowy plik .crx musi być podpisany tym samym jako aktualnie zainstalowaną wersję.

Aktualizuj URL

Jeśli hostujesz własne rozszerzenie lub aplikację, musisz dodać parametr „update_url” pole do manifest.json, na przykład:

{
  "name": "My extension",
  ...
  "update_url": "http://myhost.com/mytestextension/updates.xml",
  ...
}

Zaktualizuj plik manifestu

Plik manifestu aktualizacji zwrócony przez serwer powinien być dokumentem XML wyglądającym tak (podświetlenie wskazuje części, które należy zmodyfikować):

<?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>

Format XML został zapożyczony z używanego przez Omaha – infrastrukturę aktualizacji Google. Zobacz http://code.google.com/p/omaha/. System rozszerzeń używa tych funkcji: elementów i pliku manifestu aktualizacji:

appid

Rozszerzenie lub identyfikator aplikacji wygenerowany na podstawie hasza klucza publicznego, zgodnie z opisem w Pakowanie. Identyfikator rozszerzenia lub aplikacji Chrome możesz znaleźć na stronie Rozszerzenia (chrome://extensions).

Aplikacje hostowane nie są jednak wymienione na stronie Rozszerzenia. Identyfikator dowolnej aplikacji możesz znaleźć za pomocą atrybutu te kroki:

  • Otwórz aplikację. Aby to zrobić, kliknij jej ikonę na stronie Nowa karta.
  • Otwórz konsolę JavaScriptu. Aby to zrobić, kliknij ikonę klucza i wybierz Narzędzia > Konsola JavaScript.
  • Wpisz w konsoli JavaScript to wyrażenie: chrome.app.getDetails().id. wyświetla identyfikator aplikacji w postaci ciągu ujętego w cudzysłów.
baza kodu

Adres URL pliku .crx.

wersja

Używany przez klienta do określenia, czy powinien pobrać plik .crx określony przez codebase Wartość powinna być zgodna z wartością „version” w pliku manifest.json pliku .crx.

Plik XML manifestu może zawierać informacje o wielu rozszerzeniach, używając .

Testowanie

Domyślna częstotliwość sprawdzania dostępności aktualizacji to kilka godzin, ale możesz wymusić aktualizację, używając przycisk Aktualizuj rozszerzenia teraz na stronie Rozszerzenia.

Zaawansowane zastosowania: parametry żądania

Podstawowy mechanizm automatycznej aktualizacji został stworzony po to, aby po stronie serwera można było w prosty sposób uprościć statycznego pliku XML na dowolny zwykły serwer WWW, np. Apache, i aktualizowanie tego pliku XML w miarę jego publikowania nowych wersji rozszerzeń.

Bardziej zaawansowani programiści mogą skorzystać z tego, że dodajemy parametry do parametrów pojawi się prośba o plik manifestu aktualizacji, który wskazuje identyfikator i wersję rozszerzenia. Następnie mogą używać tego samego adres URL aktualizacji wszystkich rozszerzeń, wskazujący zamiast tego adres URL z dynamicznym kodem po stronie serwera. statycznego pliku XML.

Format parametrów żądania:

?x=_<extension_data>_

Gdzie _<extension_data>_ to zakodowany w adresie URL ciąg w formacie:

_id=<id>_&v=_<version>_

Załóżmy na przykład, że masz dwa rozszerzenia, z których każde prowadzi do tego samego adresu URL aktualizacji. (http://test.com/extension_updates.php):

  • Rozszerzenie 1
    • Identyfikator: „aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”
    • Wersja: „1.1”
  • Rozszerzenie 2
    • Identyfikator: „bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb”
    • Wersja: „0.4”

Prośba o zaktualizowanie poszczególnych rozszerzeń wyglądałaby tak:

  • http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
  • http://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

W jednej prośbie dla każdego unikalnego adresu URL aktualizacji można podać wiele rozszerzeń. Powyższe kwestie na przykład jeśli użytkownik ma zainstalowane oba rozszerzenia, żądania te zostaną scalone w pojedyncze żądanie:

http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

Jeśli liczba zainstalowanych rozszerzeń z tym samym adresem URL aktualizacji jest dostatecznie duża, by wysłać żądanie GET URL jest za długi (ponad 2000 znaków), podczas sprawdzania aktualizacji dostępne są dodatkowe żądania GET, niezbędną.

Zaawansowane użycie: minimalna wersja przeglądarki

W miarę dodawania do systemu rozszerzeń nowych interfejsów API być może zechcesz opublikować zaktualizowaną wersję wersji rozszerzenia lub aplikacji, które działają tylko z nowszymi wersjami przeglądarki. Google Chrome jest automatycznie aktualizowany, może minąć kilka dni, zanim większość użytkowników zaktualizowane do dowolnej nowej wersji. Aby mieć pewność, że dana aktualizacja będzie miała zastosowanie tylko do Google Chrome ma wartość „prodversionmin” lub wyższą niż konkretna wersja, do funkcji w pliku manifestu aktualizacji. Na przykład:

<?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>

Dzięki temu użytkownicy będą automatycznie aktualizować się do wersji 2 tylko wtedy, gdy korzystają z Google Chrome. 3.0.193.0 lub nowsza.