Otomatik güncelleme

Uzantıların ve uygulamaların, Google Chrome'un kendisiyle aynı nedenlerle otomatik olarak güncellenmesini istiyoruz: Hata ve güvenlik düzeltmeleri eklemek, yeni özellikler veya performans geliştirmeleri eklemek ve kullanıcı arayüzlerini iyileştirmek.

Chrome Geliştirici Kontrol Paneli'ni kullanarak yayınlıyorsanız bu sayfayı yoksaymanız gerekir. Önizlemeyi geçen Chrome Web Mağazası gönderimleri, uzantının Chrome Web Mağazası öğe girişinde otomatik olarak kullanıma sunulur ve son kullanıcılara dağıtılır.

Bir web sunucusunda CRX dosyası barındırıyor ve bu dosyayı yönetilen cihazlara aktarmak için kurumsal politikalar kullanıyorsanız okumaya devam edin. Barındırma ve Paketleme konularını da okumanız gerekir.

Önceden mağaza dışı uzantılar desteklendiğinde, yerel ikili programların ve uzantının kilit adımında güncellenmesi mümkündü. Ancak Chrome Web Mağazası'nda barındırılan uzantılar, geliştiricilerin kontrol etmediği Chrome güncelleme mekanizmasıyla güncellenir. Uzantı geliştiricileri, yerel ikili programa bağımlılığı olan uzantıları (örneğin, NPAPI kullanan eski uzantılar) güncelleme konusunda dikkatli olmalıdır.

Genel bakış

  • Manifest'te, güncelleme kontrolleri yapmak için bir konuma işaret eden "update_url" alanı bulunabilir.
  • Güncelleme kontrolünün döndürdüğü içerik, bir uzantının en son sürümünü listeleyen bir güncelleme manifesti XML dokümanıdır.

Tarayıcı, birkaç saatte bir yüklü uzantıların veya uygulamaların güncelleme URL'sinin olup olmadığını kontrol eder. Her biri için, bu URL'ye bir güncelleme manifest XML dosyası için istekte bulunur. Güncelleme manifestinde yüklü olandan daha yeni bir sürümden bahsediliyorsa tarayıcı yeni sürümü indirip yükler. Manuel güncellemelerde olduğu gibi yeni .crx dosyası şu anda yüklü sürümle aynı özel anahtarla imzalanmalıdır.

Güncelleme URL'si

Kendi uzantınızı veya uygulamanızı barındırıyorsanız manifest.json dosyanıza "update_url" alanını şu şekilde eklemeniz gerekir:

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

Manifesti güncelle

Sunucu tarafından döndürülen güncelleme manifesti, aşağıdakine benzer bir XML dokümanı olmalıdır (değiştirmeniz gereken bölümleri vurgulanmıştır):

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

Bu XML biçimi, Google'ın güncelleme altyapısı Omaha tarafından kullanılan biçimden ödünç alınmıştır. Daha fazla bilgi için http://code.google.com/p/omaha/ adresini ziyaret edin. Uzantı sistemi, güncelleme manifestinin ve öğeleri için aşağıdaki özellikleri kullanır:

appid

Paketleme bölümünde açıklandığı gibi ortak anahtarın karma değerine göre oluşturulan uzantı veya uygulama kimliği. Bir uzantının veya Chrome uygulamasının kimliğini Uzantılar sayfasına (chrome://extensions) giderek bulabilirsiniz.

Ancak barındırılan uygulamalar Uzantılar sayfasında listelenmez. Herhangi bir uygulamanın kimliğini bulmak için aşağıdaki adımları uygulayın:

  • Uygulamayı açın. Bunu, Yeni Sekme sayfasında uygulamanın simgesini tıklayarak yapabilirsiniz.
  • JavaScript konsolunu açın. Bunu, İngiliz anahtarı simgesini tıklayıp Araçlar > JavaScript Konsolu'nu seçerek yapabilirsiniz.
  • JavaScript konsoluna şu ifadeyi girin: chrome.app.getDetails().id. Konsol, uygulamanın kimliğini tırnak içine alınmış bir dize olarak gösterir.
kod tabanı

.crx dosyasının URL'si.

sürüm

codebase tarafından belirtilen .crx dosyasını indirip indirmemesi gerektiğini belirlemek için istemci tarafından kullanılır. .crx dosyasının manifest.json dosyasındaki "version" değeriyle eşleşmelidir.

Güncelleme manifesti XML dosyası, birden fazla öğe ekleyerek birden çok uzantı hakkında bilgi içerebilir.

Test

Varsayılan güncelleme kontrolü sıklığı birkaç saattir, ancak uzantılar sayfasının Uzantıları şimdi güncelle düğmesini kullanarak güncelleme yapılmasını zorunlu kılabilirsiniz.

Gelişmiş kullanım: istek parametreleri

Temel otomatik güncelleme mekanizması, sunucu tarafının çalışmasını, statik bir XML dosyasını Apache gibi herhangi bir düz web sunucusuna bırakmak ve uzantılarınızın yeni sürümlerini yayınlarken bu XML dosyasını güncellemek kadar kolay hale getirmek için tasarlanmıştır.

Daha ileri düzey geliştiriciler, güncelleme manifesti isteğine uzantı kimliğini ve sürümünü belirten parametreler eklediğimiz gerçeğinden yararlanmak isteyebilir. Daha sonra, statik bir XML dosyası yerine dinamik sunucu tarafı kodu çalıştıran bir URL'yi işaret ederek tüm uzantıları için aynı güncelleme URL'sini kullanabilirler.

İstek parametrelerinin biçimi şu şekildedir:

?x=_<extension_data>_

Burada _<extension_data>_, URL kodlamalı şu biçimde bir dizedir:

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

Örneğin, aynı güncelleme URL'sine (http://test.com/extension_updates.php) yönlendiren iki uzantınız olduğunu varsayalım:

  • Uzantı 1
    • Kimlik: "aaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    • Sürüm: "1.1"
  • Uzantı 2
    • Kimlik: "bbbbbbbbbbbbbbbbbbbbbb}bbbbilgili"
    • Sürüm: "0.4"

Her bir uzantıyı tek tek güncelleme isteği şöyle olacaktır:

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

Her benzersiz güncelleme URL'si için tek bir istekte birden fazla uzantı listelenebilir. Yukarıdaki örnekte, bir kullanıcıda uzantıların her ikisi de yüklüyse iki istek tek bir istekte birleştirilir:

http://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ği URL'sinin çok uzun olmasına (2000'den fazla karakter) yetecek kadar büyükse güncelleme kontrolü, gerektiği şekilde ek GET istekleri gönderir.

Gelişmiş kullanım: minimum tarayıcı sürümü

Uzantı sistemine daha fazla API ekledikçe, yalnızca tarayıcının yeni sürümleriyle çalışan bir uzantının veya uygulamanın güncellenmiş bir sürümünü yayınlamak isteyebilirsiniz. Google Chrome otomatik olarak güncellense de, kullanıcı tabanının çoğunun yeni bir sürüme güncellenmesi birkaç gün sürebilir. Belirli bir güncellemenin yalnızca belirli bir sürümdeki veya daha sonraki Google Chrome sürümlerine uygulandığından emin olmak için güncelleme manifest dosyanızdaki öğesine "prodversionmin" özelliğini eklersiniz. Örneğin:

<?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 şekilde, kullanıcılar yalnızca Google Chrome 3.0.193.0 veya sonraki bir sürümü kullanıyorsa sürüm 2'ye otomatik olarak güncelleme yapar.