เราต้องการให้ส่วนขยายและแอปมีการอัปเดตโดยอัตโนมัติ ด้วยเหตุผลบางประการเดียวกับ Google Chrome เอง: เพื่อรวมการแก้ไขข้อบกพร่องและความปลอดภัย เพิ่มฟีเจอร์ใหม่หรือการปรับปรุงประสิทธิภาพ ของอินเทอร์เฟซผู้ใช้
หากคุณเผยแพร่โดยใช้แดชบอร์ดสำหรับนักพัฒนาซอฟต์แวร์ Chrome คุณควรละเว้นหน้านี้ เว็บ Chrome การส่ง Store ที่แสดงตัวอย่างจะพร้อมใช้งานในข้อมูลผลิตภัณฑ์ใน Chrome เว็บสโตร์ของส่วนขยายโดยอัตโนมัติและทำให้ใช้งานได้กับผู้ใช้ปลายทาง
หากคุณฝากไฟล์ CRX ไว้บนเว็บเซิร์ฟเวอร์และใช้นโยบายระดับองค์กรเพื่อพุชไฟล์ไปยังที่มีการจัดการ ให้อ่านต่อ คุณควรอ่านโฮสติ้งและแพ็กเกจด้วย
ก่อนหน้านี้เมื่อระบบรองรับส่วนขยายนอกร้านค้า คุณอาจมีไบนารีแบบเนทีฟและ ส่วนขยายจะได้รับการอัปเดตในขั้นตอนล็อก อย่างไรก็ตาม ส่วนขยายที่โฮสต์ใน Chrome เว็บสโตร์ ผ่านกลไกการอัปเดต Chrome ซึ่งนักพัฒนาซอฟต์แวร์ไม่ได้ควบคุม นักพัฒนาส่วนขยายควร ควรระมัดระวังเกี่ยวกับการอัปเดตส่วนขยายที่ต้องอาศัยไบนารีแบบเนทีฟ (เช่น ส่วนขยายเดิมที่ใช้ NPAPI)
ภาพรวม
- ไฟล์ Manifest อาจมี "update_url" ซึ่งชี้ไปยังตำแหน่งสำหรับตรวจสอบการอัปเดต
- เนื้อหาที่แสดงผลโดยการตรวจสอบการอัปเดตเป็นเอกสาร XML ของอัปเดตไฟล์ Manifest ที่แสดงไฟล์เวอร์ชันล่าสุด เวอร์ชันส่วนขยาย
โดยทุก 2-3 ชั่วโมง เบราว์เซอร์จะตรวจสอบว่าส่วนขยายหรือแอปที่ติดตั้งไว้มี URL อัปเดตหรือไม่ สำหรับ
แต่ละรายการจะส่งคำขอไปยัง URL นั้นเพื่อหาไฟล์ XML Manifest ของการอัปเดต หากการอัปเดต
ไฟล์ Manifest พูดถึงเวอร์ชันที่ใหม่กว่าเมื่อติดตั้ง เบราว์เซอร์จะดาวน์โหลด และ
ติดตั้งเวอร์ชันใหม่ เช่นเดียวกับการอัปเดตด้วยตนเอง ไฟล์ .crx
ใหม่จะต้องได้รับการลงนามด้วย
คีย์ส่วนตัวเป็นเวอร์ชันที่ติดตั้งในปัจจุบัน
อัปเดต URL
หากคุณโฮสต์ส่วนขยายหรือแอปของคุณเอง คุณจะต้องเพิ่ม "update_url" ในช่องไปยัง
manifest.json
ดังนี้
{
"name": "My extension",
...
"update_url": "http://myhost.com/mytestextension/updates.xml",
...
}
อัปเดตไฟล์ Manifest
ไฟล์ Manifest ของการอัปเดตที่เซิร์ฟเวอร์ส่งคืนควรเป็นเอกสาร XML ที่มีลักษณะเช่นนี้ (ไฮไลต์จะบอกถึงส่วนต่างๆ ที่คุณควรแก้ไข):
<?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>
รูปแบบ XML นี้จะยืมมาจาก Omaha ซึ่งเป็นโครงสร้างพื้นฐานการอัปเดตของ Google ที่ใช้ โปรดดู
ดูรายละเอียดเพิ่มเติมได้ที่ http://code.google.com/p/omaha/ ระบบส่วนขยายใช้สิ่งต่อไปนี้
สำหรับองค์ประกอบ
- appid
รหัสส่วนขยายหรือรหัสแอปที่สร้างขึ้นตามแฮชของคีย์สาธารณะตามที่อธิบายไว้ใน แพ็กเกจ คุณสามารถดูรหัสของส่วนขยายหรือแอป Chrome ได้โดยไปที่หน้าส่วนขยาย (chrome://extensions).
อย่างไรก็ตาม แอปที่โฮสต์ไว้จะไม่แสดงในหน้าส่วนขยาย คุณสามารถค้นหารหัสของแอปใดก็ได้โดยใช้ ขั้นตอนต่อไปนี้
- เปิดแอป ซึ่งทำได้โดยการคลิกที่ไอคอนบนหน้าแท็บใหม่
- เปิดคอนโซล JavaScript โดยคลิกไอคอนเครื่องมือและเลือก เครื่องมือ > คอนโซล JavaScript
- ป้อนนิพจน์ต่อไปนี้ลงในคอนโซล JavaScript:
chrome.app.getDetails().id
Console จะแสดงรหัสของแอปเป็นสตริงในเครื่องหมายคำพูด
- ฐานของโค้ด
URL ไปยังไฟล์
.crx
- เวอร์ชัน
ไคลเอ็นต์จะใช้เพื่อพิจารณาว่าควรดาวน์โหลดไฟล์
.crx
ที่ระบุโดยcodebase
ค่านี้ควรตรงกับค่าของ "เวอร์ชัน" ในไฟล์manifest.json
ของไฟล์.crx
ไฟล์ XML ไฟล์ Manifest ของการอัปเดตอาจมีข้อมูลเกี่ยวกับส่วนขยายหลายรายการโดยการรวมส่วนขยายหลายรายการ
การทดสอบ
ความถี่ในการตรวจสอบการอัปเดตเริ่มต้นคือหลายชั่วโมง แต่คุณสามารถบังคับการอัปเดตโดยใช้ ปุ่มอัปเดตส่วนขยายเลยในหน้าส่วนขยาย
การใช้งานขั้นสูง: พารามิเตอร์คำขอ
กลไกการอัปเดตอัตโนมัติขั้นพื้นฐานได้รับการออกแบบมาให้ทำงานกับฝั่งเซิร์ฟเวอร์ได้ง่ายเพียงแค่ทิ้ง ไฟล์ XML แบบคงที่ไปยังเว็บเซิร์ฟเวอร์ทั่วไป เช่น Apache และการอัปเดตไฟล์ XML ดังกล่าวเมื่อคุณเผยแพร่ ส่วนขยายเวอร์ชันใหม่ของคุณ
นักพัฒนาซอฟต์แวร์ขั้นสูงขึ้นไปอีกอาจต้องการใช้ประโยชน์จากการที่เราเพิ่มพารามิเตอร์ลงใน คำขอไฟล์ Manifest สำหรับการอัปเดตเพื่อระบุรหัสและเวอร์ชันของส่วนขยาย จากนั้นพวกเขาก็สามารถใช้ อัปเดต URL สำหรับส่วนขยายทั้งหมดโดยชี้ไปยัง URL ที่เรียกใช้โค้ดฝั่งเซิร์ฟเวอร์แบบไดนามิกแทน ไฟล์ XML แบบคงที่
รูปแบบของพารามิเตอร์คำขอคือ
?x=_<extension_data>_
โดยที่ _<extension_data>_
คือสตริงที่เข้ารหัส URL ของรูปแบบ
_id=<id>_&v=_<version>_
ตัวอย่างเช่น สมมติว่าคุณมีส่วนขยาย 2 รายการ ส่วนขยายทั้งคู่นำไปยัง URL อัปเดตเดียวกัน
(http://test.com/extension_updates.php
):
- ส่วนขยาย 1
- ID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
- รุ่น: "1.1"
- ส่วนขยาย 2
- รหัส: "bbbbbbbbbbbbbbbbbbbbbbbbbbbb ซึ่ง
- รุ่น: "0.4"
คำขออัปเดตส่วนขยายแต่ละรายการจะมีลักษณะดังนี้
http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
http://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
ส่วนขยายหลายรายการสามารถแสดงในคำขอเดียวสำหรับ URL อัปเดตที่ไม่ซ้ำกันแต่ละรายการ สำหรับ 2 สิ่งนี้ ตัวอย่างเช่น หากผู้ใช้ติดตั้งส่วนขยายทั้งสอง คำขอทั้งสองจะรวมเข้าด้วยกัน คำขอเดียว:
http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
หากจำนวนส่วนขยายที่ติดตั้งโดยใช้ URL อัปเดตเดียวกันมีจำนวนมากเท่ากับคำขอ GET URL ยาวเกินไป (มากกว่า 2,000 อักขระ) การตรวจสอบการอัปเดตจะออกคำขอ GET เพิ่มเติมเป็น ตามความจำเป็น
การใช้งานขั้นสูง: เวอร์ชันเบราว์เซอร์ขั้นต่ำ
เมื่อเราเพิ่ม API เพิ่มเติมให้กับระบบส่วนขยาย คุณจึงอาจต้องการเผยแพร่
ส่วนขยายหรือแอปที่จะใช้ได้เฉพาะกับเบราว์เซอร์เวอร์ชันใหม่เท่านั้น ในขณะที่ Google
Chrome จะได้รับการอัปเดตโดยอัตโนมัติ ซึ่งอาจใช้เวลา 2-3 วันก่อนที่ฐานผู้ใช้ส่วนใหญ่
ที่อัปเดตเป็นเวอร์ชันใหม่ เพื่อให้แน่ใจว่าการอัปเดตที่ระบุจะมีผลกับ Google Chrome เท่านั้น
เวอร์ชันที่สูงกว่าหรือสูงกว่าเวอร์ชันที่เจาะจง คุณจะเพิ่มคอลัมน์ "prodversionmin" ให้กับ
<?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>
ซึ่งจะช่วยให้ผู้ใช้อัปเดตเป็นเวอร์ชัน 2 โดยอัตโนมัติก็ต่อเมื่อใช้ Google Chrome เท่านั้น 3.0.193.0 ขึ้นไป