Kami ingin ekstensi dan aplikasi diupdate secara otomatis karena beberapa alasan yang sama dengan Google Chrome itu sendiri: untuk menyertakan perbaikan bug dan keamanan, menambahkan fitur baru atau peningkatan performa, dan meningkatkan antarmuka pengguna.
Jika memublikasikan menggunakan Dasbor Developer Chrome, Anda harus mengabaikan halaman ini. Kiriman Chrome Web Store yang lulus pratinjau akan otomatis tersedia di listingan item Chrome Web Store ekstensi dan di-deploy ke pengguna akhir.
Jika Anda menghosting file CRX di server web dan menggunakan kebijakan perusahaan untuk mendorongnya ke perangkat terkelola, lanjutkan membaca. Anda juga harus membaca Hosting dan Pengepakan.
Sebelumnya, saat ekstensi di luar toko didukung, biner dan ekstensi dapat diupdate secara bersamaan. Namun, ekstensi yang dihosting di Chrome Web Store diupdate menggunakan mekanisme update Chrome yang tidak dikontrol developer. Developer ekstensi harus berhati-hati saat mengupdate ekstensi yang memiliki dependensi pada biner (misalnya, ekstensi lama yang menggunakan NPAPI).
Ringkasan
- Manifes dapat berisi kolom "update_url", yang mengarah ke lokasi untuk melakukan pemeriksaan update.
- Konten yang ditampilkan oleh pemeriksaan update adalah dokumen XML manifes update yang mencantumkan versi terbaru ekstensi.
Setiap beberapa jam, browser akan memeriksa apakah ekstensi atau aplikasi yang diinstal memiliki URL update. Untuk
setiap URL, aplikasi akan membuat permintaan ke URL tersebut untuk mencari file XML manifes update. Jika manifes update
menyebutkan versi yang lebih baru dari yang diinstal, browser akan mendownload dan
menginstal versi baru. Seperti update manual, file .crx
baru harus ditandatangani dengan kunci pribadi
yang sama dengan versi yang diinstal.
Memperbarui URL
Jika menghosting ekstensi atau aplikasi Anda sendiri, Anda perlu menambahkan kolom "update_url" ke
file manifest.json
, seperti ini:
{
"name": "My extension",
...
"update_url": "http://myhost.com/mytestextension/updates.xml",
...
}
Mengupdate manifes
Manifes update yang ditampilkan oleh server harus berupa dokumen XML yang terlihat seperti ini (sorotan 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 diambil dari format yang digunakan oleh Omaha, infrastruktur update Google. Lihat
http://code.google.com/p/omaha/ untuk mengetahui detail selengkapnya. Sistem ekstensi menggunakan atribut
berikut untuk elemen <app>
dan <updatecheck>
dari manifes update:
- appid
ID aplikasi atau ekstensi, yang dibuat berdasarkan hash kunci publik, seperti yang dijelaskan dalam Pengepakan. 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 pas dan memilih Alat > Konsol JavaScript.
- Masukkan ekspresi berikut ke konsol JavaScript:
chrome.app.getDetails().id
. Konsol menampilkan ID aplikasi sebagai string yang diapit tanda petik.
- codebase
URL ke file
.crx
.- versi
Digunakan oleh klien untuk menentukan apakah file
.crx
yang ditentukan olehcodebase
harus didownload. Nilai ini harus cocok dengan nilai "version" di filemanifest.json
file.crx
.
File XML manifes update dapat berisi informasi tentang beberapa ekstensi dengan menyertakan beberapa
elemen <app>
.
Pengujian
Frekuensi pemeriksaan update default adalah beberapa jam, tetapi Anda dapat memaksa update menggunakan tombol Update extensions now di halaman Extensions.
Penggunaan lanjutan: parameter permintaan
Mekanisme update otomatis dasar dirancang untuk meminimalkan pekerjaan sisi server. Anda hanya perlu menambahkan file XML statis ke server web apa pun seperti Apache, dan memperbarui file XML tersebut saat merilis versi baru ekstensi.
Developer yang lebih mahir dapat memanfaatkan fakta bahwa kita menambahkan parameter ke permintaan manifes update untuk menunjukkan ID dan versi ekstensi. Kemudian, mereka dapat menggunakan URL update yang sama untuk semua ekstensi, yang mengarah ke URL yang menjalankan kode sisi server dinamis, bukan file XML statis.
Format parameter permintaan adalah:
?x=_<extension_data>_
Dengan _<extension_data>_
adalah string yang dienkode 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: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
- Versi: "0.4"
Permintaan untuk mengupdate 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 yang unik. Misalnya, jika pengguna menginstal kedua ekstensi, kedua permintaan tersebut akan digabungkan menjadi satu permintaan:
http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
Jika jumlah ekstensi yang diinstal menggunakan URL update yang sama cukup besar sehingga URL permintaan GET terlalu panjang (lebih dari 2.000 karakter atau lebih), pemeriksaan update akan mengeluarkan permintaan GET tambahan sesuai kebutuhan.
Penggunaan lanjutan: versi browser minimum
Seiring kami menambahkan lebih banyak API ke sistem ekstensi, Anda mungkin ingin merilis versi ekstensi atau aplikasi yang telah diupdate dan hanya akan berfungsi dengan browser versi yang lebih baru. Meskipun Google
Chrome sendiri diupdate secara otomatis, perlu waktu beberapa hari sebelum sebagian besar basis pengguna
mengupdate ke rilis baru tertentu. Untuk memastikan bahwa update tertentu hanya akan berlaku untuk versi Google Chrome
yang sama dengan atau lebih tinggi dari versi tertentu, Anda menambahkan atribut "prodversionmin" ke elemen
<app>
dalam manifes update. 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>
Tindakan ini akan memastikan bahwa pengguna akan otomatis mengupdate ke versi 2 hanya jika mereka menjalankan Google Chrome 3.0.193.0 atau yang lebih baru.