Linux to jedyna platforma, na której użytkownicy Chrome mogą instalować rozszerzenia hostowane poza
Chrome Web Store, Z tego artykułu dowiesz się, jak spakować, hostować i aktualizować crx
z serwera WWW ogólnego przeznaczenia. Jeśli dystrybuujesz tylko rozszerzenie lub motyw
w Chrome Web Store zapoznaj się z artykułem Hosting w sklepie Chrome Web Store
aktualizacji.
Pakiet
Rozszerzenia i motywy są wyświetlane jako pliki .crx
. W przypadku przesyłania za pomocą
programisty Chrome
, zostanie automatycznie utworzony plik crx
. Jeśli opublikowano
na serwerze osobistym, musisz utworzyć plik crx
lokalnie lub pobrać go z Chrome
Chrome Web Store.
Pobierz plik .crx z Chrome Web Store
Jeśli rozszerzenie jest hostowane w Chrome Web Store, plik .crx
można pobrać z
Panel dewelopera. Znajdź rozszerzenie w sekcji „Twoje informacje o produktach”. i kliknij „Więcej informacji”. W
kliknij niebieski link main.crx
, aby pobrać aplikację.
Pobrany plik może być przechowywany na serwerze osobistym. To najbezpieczniejszy sposób hostowania lokalnie, ponieważ zawartość rozszerzenia będzie podpisana przez Chrome Web Store. Ten pomaga wykrywać potencjalne ataki i manipulacje.
Utwórz plik .crx lokalnie
Katalogi rozszerzeń są konwertowane na pliki .crx
na stronie zarządzania rozszerzeniami. Nawiguj do
chrome://extensions/
w omniboksie lub kliknij menu Chrome i przytrzymaj wskaźnik nad „Więcej narzędzi” a następnie
kliknij „Rozszerzenia”.
Na stronie zarządzania rozszerzeniami włącz tryb programisty, klikając przełącznik obok Tryb programisty. Następnie kliknij przycisk SPAKUJ ROZSZERZENIE.
W polu Katalog główny rozszerzenia określ ścieżkę do folderu rozszerzenia, a następnie kliknij Przycisk SPACK ROZSZERZENIE. W przypadku pakietu tworzonego po raz pierwszy zignoruj pole Klucz prywatny.
Chrome utworzy dwa pliki: .crx
i .pem
, które zawierają treść
klucz prywatny.
Nie trać klucza prywatnego. Przechowuj plik .pem
w bezpiecznym i bezpiecznym miejscu. będzie
potrzebne do zaktualizowania rozszerzenia.
Aktualizowanie pakietu .crx
Aby zaktualizować plik .crx
rozszerzenia, zwiększ numer wersji w narzędziu manifest.json
.
{
...
"version": "1.5",
...
}
}
{
...
"version": "1.6",
...
}
}
Wróć na stronę zarządzania rozszerzeniami i kliknij przycisk SPAKUJ ROZSZERZENIE. Podaj wartość ścieżki do katalogu rozszerzeń i lokalizacji klucza prywatnego.
Na stronie znajdziesz ścieżkę do zaktualizowanego pakietu.
Pakiet przez wiersz poleceń
Rozszerzenia pakietów w wierszu poleceń przez wywołanie chrome.exe
. Użyj funkcji --pack-extension
flagę pozwalającą określić lokalizację folderu rozszerzenia oraz flagę --pack-extension-key
do
określ lokalizację pliku klucza prywatnego rozszerzenia.
chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem
Host
Serwer hostujący pliki .crx
musi używać odpowiednich nagłówków HTTP, aby umożliwić użytkownikom zainstalowanie
klikając odpowiedni link.
Google Chrome uznaje plik za możliwy do zainstalowania, jeśli jest spełniony dowolny z tych warunków:
- Typ treści pliku to
application/x-chrome-extension
- Sufiks pliku to
.crx
i są spełnione oba te warunki:- .
- Plik nie jest udostępniany z nagłówkiem HTTP
X-Content-Type-Options: nosniff
- Plik jest udostępniany z jednym z tych typów treści:
- pusty ciąg
"text/plain"
"application/octet-stream"
"unknown/unknown"
"application/unknown"
"\*/\*"
- Plik nie jest udostępniany z nagłówkiem HTTP
Najczęstszą przyczyną braku rozpoznania pliku z możliwością zainstalowania jest to, że serwer wysyła
nagłówek X-Content-Type-Options: nosniff
. Drugim najczęstszym powodem jest to, że serwer wysyła wiadomość
nieznany typ treści – taki, którego nie ma na poprzedniej liście. Aby rozwiązać problem z nagłówkiem HTTP, zmień jedną z tych opcji:
musisz zmienić konfigurację serwera, albo spróbować przechowywać plik .crx
na innym serwerze.
Aktualizuj
Przeglądarka co kilka godzin sprawdza zainstalowane rozszerzenia pod kątem adresu URL aktualizacji. W przypadku każdego z nich do tego adresu URL w poszukiwaniu pliku XML manifestu aktualizacji.
- Treść zwracana przez sprawdzanie dostępności aktualizacji to dokument XML pliku manifestu aktualizacji zawierający najnowsze wersji rozszerzenia.
Jeśli plik manifestu aktualizacji zawiera informację o wersji nowszej niż zainstalowana, przeglądarka
pobierze i zainstaluje nową wersję. Tak jak w przypadku aktualizacji ręcznych, nowy plik .crx
musi być podpisany
z tym samym kluczem prywatnym co obecnie zainstalowana wersja.
Aktualizuj URL
Rozszerzenia hostowane na serwerach poza Chrome Web Store muszą zawierać pole update_url
w
swój plik manifest.json
.
{
"name": "My extension",
...
"update_url": "https://myhost.com/mytestextension/updates.xml",
...
}
Zaktualizuj plik manifestu
Plik manifestu aktualizacji zwrócony przez serwer powinien być dokumentem XML.
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'>
<updatecheck codebase='https://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
</app>
</gupdate>
Format XML został zapożyczony z formatu używanego przez Omaha, infrastrukturę aktualizacji Google.
system rozszerzeń korzysta z tych atrybutów dla elementów <app>
i <updatecheck>
:
Zaktualizuj plik manifestu:
- appid
- Identyfikator rozszerzenia jest generowany na podstawie hasza klucza publicznego, zgodnie z opisem w sekcji opakowanie. Identyfikator rozszerzenia jest wyświetlany na stronie zarządzania rozszerzeniami.
- baza kodu
- Adres URL HTTPS pliku
.crx
. - wersja
- Używane 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
<app>
elementów.
Testowanie
Domyślna częstotliwość sprawdzania dostępności aktualizacji wynosi kilka godzin, ale aktualizacja może zostać wymuszona przy użyciu polecenia Aktualizacja rozszerzenia na stronie zarządzania rozszerzeniami.
Spowoduje to rozpoczęcie sprawdzania wszystkich zainstalowanych rozszerzeń.
Zaawansowane zastosowania: parametry żądania
Podstawowy mechanizm automatycznej aktualizacji został zaprojektowany tak, aby po stronie serwera można było w prosty sposób statycznego pliku XML na dowolny zwykły serwer WWW, np. Apache, i aktualizowanie go jako nowego wersji rozszerzenia.
Deweloperzy hostujący wiele rozszerzeń mogą sprawdzać parametry żądań, które wskazują identyfikator rozszerzenia i jej wersji w żądaniu aktualizacji. Dzięki dodaniu tych parametrów rozszerzenia mogą aktualizować się z ten sam adres URL z dynamicznym kodem po stronie serwera zamiast statycznego pliku XML.
Format parametrów żądania:
?x=EXTENSION_DATA
Gdzie EXTENSION_DATA
to zakodowany w adresie URL ciąg w formacie:
id=EXTENSION_ID&v=EXTENSION_VERSION
Na przykład 2 rozszerzenia wskazują ten sam adres URL aktualizacji (https://test.com/extension_updates.php
):
- Rozszerzenie 1
- Identyfikator: „aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”
- Wersja: „1.1”
- Rozszerzenie 2
- Identyfikator: „bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb”
- Wersja: „0.4”
Żądanie zaktualizowania poszczególnych rozszerzeń wyglądałoby wtedy tak:
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
i
https://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ń. Dla poprzedniego na przykład jeśli użytkownik ma zainstalowane oba rozszerzenia, żądania te zostaną scalone w pojedyncze żądanie:
https://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ń kolejnych interfejsów API będziemy aktualizować nową wersję rozszerzenia, które będzie działać
tylko w nowszych wersjach tej przeglądarki. Przeglądarka Google Chrome jest automatycznie aktualizowana,
Zanim większość użytkowników zostanie zaktualizowana do nowej wersji, może minąć kilka dni. Do
upewnij się, że dana aktualizacja będzie miała zastosowanie tylko do Google Chrome w wersji na poziomie lub wyższym
dodaj parametr „prodversionmin” do elementu <app>
w odpowiedzi na żądanie aktualizacji.
<?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 aktualizowali się do wersji 2 tylko w przeglądarce Google Chrome. 3.0.193.0 lub nowsza.