Update otomatis

Kami ingin ekstensi dan aplikasi diupdate secara otomatis untuk beberapa alasan yang sama seperti Google Chrome itu sendiri: untuk menggabungkan perbaikan bug dan keamanan, menambahkan fitur baru atau peningkatan performa, serta meningkatkan antarmuka pengguna.

Jika memublikasikan menggunakan Dasbor Developer Chrome, Anda harus mengabaikan halaman ini. Web Chrome Kiriman Play Store yang lulus pratinjau akan otomatis tersedia di listingan item Chrome Web Store ekstensi dan di-deploy untuk pengguna akhir.

Jika Anda menghosting file CRX di server web dan menggunakan kebijakan perusahaan untuk mendorongnya ke file terkelola teruslah membaca. Anda juga harus membaca Hosting dan Pengemasan.

Sebelumnya, ketika ekstensi di luar toko didukung, dimungkinkan untuk memiliki biner dan ekstensi diperbarui pada langkah kunci. Namun, ekstensi yang dihosting di Chrome Web Store diupdate melalui mekanisme update Chrome yang tidak dikontrol oleh developer. Developer ekstensi seharusnya berhati-hatilah dalam mengupdate ekstensi yang memiliki dependensi pada biner native (misalnya, ekstensi lama menggunakan NPAPI).

Ringkasan

  • Manifes dapat berisi "update_url" yang mengarah ke lokasi untuk melakukan pemeriksaan pembaruan.
  • Konten yang ditampilkan oleh pemeriksaan update adalah dokumen XML manifes update yang mencantumkan versi ekstensi dari suatu ekstensi.

Setiap beberapa jam, browser akan memeriksa apakah ada ekstensi atau aplikasi yang diinstal yang memiliki URL update. Sebagai masing-masing, klien ini membuat permintaan ke URL itu untuk mencari file XML manifes pembaruan. Jika pembaruan menyebutkan versi yang lebih baru daripada yang terinstal, browser mengunduh dan akan menginstal versi baru. Seperti pembaruan manual, file .crx baru harus ditandatangani dengan sebagai versi yang sudah terinstal saat ini.

Perbarui URL

Jika menghosting ekstensi atau aplikasi sendiri, Anda harus menambahkan "update_url" ke manifest.json, seperti ini:

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

Mengupdate manifes

Manifes pembaruan yang ditampilkan oleh server harus berupa dokumen XML yang terlihat seperti ini (sorot menunjukkan bagian yang harus Anda ubah):

<?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 ini dipinjam dari yang digunakan oleh Omaha, infrastruktur pembaruan Google. Lihat http://code.google.com/p/omaha/ untuk detail selengkapnya. Sistem ekstensi menggunakan untuk elemen dan dari manifes update:

appid

Ekstensi atau ID aplikasi, yang dibuat berdasarkan hash kunci publik, seperti yang dijelaskan di Pengemasan. Anda dapat menemukan ID ekstensi atau Aplikasi Chrome dengan membuka halaman Ekstensi (chrome://extensions).

Namun, aplikasi yang dihosting tidak dicantumkan di halaman Ekstensi. Anda dapat menemukan ID aplikasi apa pun menggunakan langkah-langkah berikut:

  • Buka aplikasi. Anda dapat melakukannya dengan mengklik ikonnya di halaman Tab Baru.
  • Buka konsol JavaScript. Anda dapat melakukannya dengan mengklik ikon kunci inggris dan memilih Alat > Konsol JavaScript.
  • Masukkan ekspresi berikut ke konsol JavaScript: chrome.app.getDetails().id. Tujuan yang menunjukkan ID aplikasi sebagai string yang diberi tanda kutip.
codebase

URL ke file .crx.

versi

Digunakan oleh klien untuk menentukan apakah harus mendownload file .crx yang ditentukan oleh codebase. Nilai ini harus cocok dengan nilai "version" dalam file manifest.json dari file .crx.

File XML manifes update dapat berisi informasi tentang beberapa ekstensi dengan menyertakan beberapa .

Pengujian

Frekuensi pemeriksaan update default adalah beberapa jam, tetapi Anda dapat memaksa update menggunakan Tombol Perbarui ekstensi sekarang pada halaman ekstensi.

Penggunaan lanjutan: parameter permintaan

Mekanisme pembaruan otomatis dasar dirancang untuk membuat sisi server bekerja semudah menjatuhkan file XML statis ke server web biasa seperti Apache, dan memperbarui file XML itu saat Anda merilis versi baru ekstensi.

Pengembang yang lebih maju mungkin ingin memanfaatkan fakta bahwa kami menambah parameter ke manifes update untuk menunjukkan ID dan versi ekstensi. Kemudian, mereka dapat menggunakan memperbarui URL untuk semua ekstensinya, yang mengarah ke URL yang menjalankan kode sisi server dinamis sebagai gantinya file XML statis.

Format parameter permintaan adalah:

?x=_<extension_data>_

Dengan _<extension_data>_ adalah string yang dienkode ke URL dengan format:

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

Misalnya, Anda memiliki dua ekstensi, yang keduanya mengarah ke URL update yang sama (http://test.com/extension_updates.php):

  • Ekstensi 1
    • ID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    • Versi: "1.1"
  • Ekstensi 2
    • ID: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • Versi: "0.4"

Permintaan untuk memperbarui setiap ekstensi adalah:

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

Beberapa ekstensi dapat dicantumkan dalam satu permintaan untuk setiap URL update unik. Untuk yang di atas misalnya, jika pengguna telah menginstal kedua ekstensi, kedua permintaan tersebut akan digabungkan menjadi permintaan tunggal:

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

Jika jumlah ekstensi yang diinstal yang menggunakan URL update yang sama cukup besar sehingga permintaan GET URL terlalu panjang (lebih dari 2.000 karakter), pemeriksaan pembaruan mengeluarkan permintaan GET tambahan sebagai diperlukan.

Penggunaan lanjutan: versi browser minimum

Seiring bertambahnya API yang kami tambahkan ke sistem ekstensi, Anda mungkin ingin merilis ekstensi atau aplikasi yang hanya akan berfungsi dengan versi browser yang lebih baru. Meskipun Google Chrome diperbarui secara otomatis dan dapat memerlukan waktu beberapa hari sebelum sebagian besar basis pengguna diupdate ke setiap rilis baru. Untuk memastikan bahwa update yang diberikan hanya akan diterapkan pada Google Chrome pada atau yang lebih tinggi dari versi tertentu, Anda menambahkan parameter "prodversionmin" ke dalam manifes update Anda. Contoh:

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

Ini akan memastikan bahwa pengguna akan mengupdate secara otomatis ke versi 2 hanya jika mereka menjalankan Google Chrome 3.0.193.0 atau yang lebih besar.