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
- 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 przezcodebase
Wartość powinna być zgodna z wartością „version” w plikumanifest.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
<?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.