Chrome Web Mağazası'nın dışında barındırılan uzantılar yalnızca Linux kullanıcıları tarafından yüklenebilir. Bu
makalesinde, kişisel sunucudan .crx dosyalarının nasıl paketleneceği, barındırılacağı ve güncelleneceği açıklanmaktadır. Eğer
bir uzantı veya tema dağıtıp yalnızca Chrome Web Mağazası üzerinden dağıtıyorsanız Web Mağazası
Barındırma ve Güncelleme.
Sunum
Uzantılar ve temalar .crx dosyaları olarak sunulur. Chrome Geliştirici aracılığıyla yüklerken
Kontrol Paneli'ni tıkladığınızda , kontrol paneli .crx dosyasını otomatik olarak oluşturur. Kişisel ortamda yayınlandıysa
.crx dosyasının yerel olarak oluşturulması veya Chrome Web Mağazası'ndan indirilmesi gerekir.
Chrome Web Mağazası'ndan .crx dosyasını indirin
Uzantı Chrome Web Mağazası'nda barındırılıyorsa .crx dosyası şu kaynaktan indirilebilir:
Geliştirici Kontrol Paneli. "Girişleriniz" bölümünde uzantıyı bulun ve "Daha fazla bilgi"yi tıkla.
pop-up penceresinde mavi main.crx bağlantısını tıklayın.

İndirilen dosya kişisel bir sunucuda barındırılabilir. Bu, bir web sitesi barındırmanın en güvenli uzantısına sahip olur. Aksi halde, uzantının içeriği Chrome Web Mağazası tarafından imzalanır. Bu olası saldırıları ve kurcalamaları tespit etmeye yardımcı olur.
Yerel olarak .crx oluşturun
Uzantı dizinleri, Uzantı Yönetimi Sayfası'nda .crx dosyalarına dönüştürülür. Şuraya git:
Çok amaçlı adres çubuğundaki chrome://extensions/ simgesini veya Chrome menüsünü tıklayarak fareyle "Diğer Araçlar"ın üzerine gelin ardından
"Uzantılar"ı seçin.
Uzantı Yönetimi sayfasında, Geliştirici modu Ardından PAKET UZANTISI düğmesini seçin.

Uzantının kök dizini alanında uzantının klasörünün yolunu belirtin ve ardından PAKET UZANTISI düğmesi. İlk kez gönderilecek paket için Özel anahtar alanını yoksayın.

Chrome, .crx dosyası ve uzantının adını içeren .pem dosyası olmak üzere iki dosya oluşturur.
gizli anahtardır.

Özel anahtarı kaybetmeyin. .pem dosyasını gizli ve güvenli bir yerde saklayın; olacak
Uzantıyı güncellemek için gerekenler.
.crx paketini güncelleme
manifest.json içindeki sürüm numarasını artırarak bir uzantının .crx dosyasını güncelleyin.
{
...
"version": "1.5",
...
}
}
{
...
"version": "1.6",
...
}
}
Uzantı Yönetimi Sayfası'na dönün ve PAKET UZANTISI düğmesini tıklayın. Belirtin: uzantı dizinine ve özel anahtarın konumuna giden yol.

Sayfa, güncellenen paketlenmiş uzantının yolunu sağlar.

Komut satırından paketle
chrome.exe komutunu çağırarak uzantıları komut satırında paketleyin. --pack-extension kullanın
işaretinin bulunduğu yeri belirtmek için --pack-extension-key işaretini ve
uzantının özel anahtar dosyasının konumunu belirtin.
chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem
Barındırma
.crx dosyalarını barındıran bir sunucu, kullanıcıların
bir bağlantıyı tıklayarak uzantınızı görebilirsiniz.
Aşağıdakilerden biri doğruysa Google Chrome bir dosyayı yüklenebilir olarak kabul eder:
- Dosyanın içerik türü
application/x-chrome-extension - Dosya soneki
.crxşeklindedir ve aşağıdakilerin ikisi de doğrudur:- Dosya
X-Content-Type-Options: nosniffHTTP başlığıyla sunulmaz - Dosya, aşağıdaki içerik türlerinden biriyle yayınlanır:
- boş dize
- "metin/düz"
- "application/octet-stream"
- "unknown/unknown"
- "uygulama/bilinmiyor"
- "*/*"
- Dosya
Yüklenebilir bir dosyayı tanıyamamanın en yaygın nedeni, sunucunun
başlık X-Content-Type-Options: nosniff. En yaygın ikinci neden, sunucunun
bilinmeyen içerik türü (önceki listede yer almayan bir içerik türü) HTTP üst bilgisi sorununu düzeltmek için aşağıdakilerden birini değiştirin:
veya .crx dosyasını başka bir sunucuda barındırmayı deneyin.
Güncelleniyor
Tarayıcı, birkaç saatte bir yüklü uzantılarda güncelleme URL'si olup olmadığını kontrol eder. Her biri için bir isteği iletebilir.
- Bir güncelleme kontrolüyle döndürülen içerik, en son güncellemeleri listeleyen güncelleme manifesti XML dokümanıdır: sürümünü kullanabilirsiniz.
Güncelleme manifest'inde yüklü olandan daha yeni bir sürümden bahsediliyorsa tarayıcı
yeni sürümü indirir ve yükler. Manuel güncellemelerde olduğu gibi, yeni .crx dosyası da imzalanmalıdır
yüklü olan sürümle aynı özel anahtara sahip olduğundan emin olun.
URL'yi güncelle
Chrome Web Mağazası dışındaki sunucularda barındırılan uzantıların update_url alanını içermelidir.
manifest.json dosyasına aktarmalıdır.
{
"name": "My extension",
...
"update_url": "https://myhost.com/mytestextension/updates.xml",
...
}
Manifest güncelleme
Sunucu tarafından döndürülen güncelleme manifesti bir XML belgesi olmalıdır.
<?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>
Bu XML biçimi, Google'ın güncelleme altyapısı olan Omaha tarafından kullanılan biçimden alınmıştır. İlgili içeriği oluşturmak için kullanılan
uzantıları sistemi şu özelliklerin <app> ve <updatecheck> öğeleri için aşağıdaki özellikleri kullanır:
manifestoyu güncelleyin:
| appid | Uzantı kimliği, paketleme bölümünde açıklandığı gibi ortak anahtarın karma değeri temel alınarak oluşturulur. Uzantının kimliği, Uzantı Yönetimi Sayfası'nda gösterilir |
| kod tabanı | .crx dosyasının HTTPS URL'si. |
| sürüm | İstemci tarafından, codebase tarafından belirtilen .crx dosyasını indirip indirmeyeceğini belirlemek için kullanılır. Bu değer, "version" değeriyle eşleşmelidir. .crx dosyasının manifest.json dosyasında. |
Güncelleme manifesti XML dosyası, birden fazla uzantı ekleyerek birden çok uzantı hakkında bilgi içerebilir. <app> öğeler.
Test
Varsayılan güncelleme kontrolü sıklığı birkaç saattir, ancak Güncelleme hemen uzantıları ekle düğmesini tıklamanız yeterlidir.

Bu işlem, yüklü tüm uzantılar için kontrolleri başlatır.
Gelişmiş kullanım: istek parametreleri
Temel otomatik güncelleme mekanizması, sunucu tarafında çalışan bir öğeyi bir herhangi bir düz web sunucusuna (örneğin, Apache) yükleme ve bu XML dosyasını yeni bir uzantı sürümleri yayınlandı.
Birden fazla uzantı barındıran geliştiriciler, uzantı kimliğini gösteren istek parametrelerini kontrol edebilirler. ve sürümünü de eklemeniz gerekir. Bu parametrelerin eklenmesi, uzantıların aynı URL'nin çalıştırılmasına olanak tanır.
İstek parametrelerinin biçimi şu şekildedir:
?x=EXTENSION_DATA
Burada EXTENSION_DATA, şu biçimdeki URL kodlamalı bir dizedir:
id=EXTENSION\_ID&v=EXTENSION\_VERSION
Örneğin, iki uzantı aynı güncelleme URL'sine (https://test.com/extension_updates.php) yönlendiriyor:
- Uzantı 1
- Kimlik: "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- Sürüm: "1.1"
- Uzantı 2
- Kimlik: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
- Sürüm: "0.4"
Her bir uzantıyı güncelleme isteği şöyle olur:
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
ve
https://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
Her benzersiz güncelleme URL'si için tek bir istekte birden çok uzantı listelenebilir. Yukarıdakiler için Örneğin, kullanıcıda uzantıların her ikisi de yüklüyse bu iki istek tek bir tekli istek:
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
Aynı güncelleme URL'sini kullanan yüklü uzantıların sayısı bir GET isteğine karşılık gelecek kadar fazlaysa URL çok uzun (2000 veya daha fazla karakterden fazlası), güncelleme kontrolü gerekir.
Gelişmiş kullanım: minimum tarayıcı sürümü
Uzantılar sistemine daha fazla API eklendikçe, çalışan bir uzantının çalışması için güncellenmiş bir sürümü
tarayıcı yalnızca yeni sürümleriyle kullanıma sunulabilir. Google Chrome'un kendisi otomatik olarak güncellense de
kullanıcı tabanının çoğunluğunun belirli bir yeni sürüme güncellenmesi birkaç gün sürebilir. Alıcı:
belirli bir güncellemenin yalnızca belirli bir sürümdeki veya daha yeni Google Chrome sürümlerine uygulanacağından emin olmak için
sürümünü kullanıyorsanız özelliğini
<?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>
Bu, yalnızca Google Chrome çalıştıran kullanıcıların sürüm 2'ye otomatik olarak güncelleme yapmasını sağlar. 3.0.193.0 veya üzeri.