עדכון אוטומטי

אנחנו רוצים שתוספים ואפליקציות יתעדכנו אוטומטית מכמה סיבות כמו ב-Google Chrome עצמו: כדי לשלב תיקוני באגים ואבטחה, להוסיף תכונות חדשות או שיפורי ביצועים, ולשפר ממשקי משתמש.

אם מפרסמים באמצעות מרכז השליטה למפתחים של Chrome, צריך לתעלם מהדף הזה. דפדפן Chrome שליחות של חנויות שעברו תצוגה מקדימה זמינות באופן אוטומטי בדף האפליקציה של התוסף בחנות האינטרנט של Chrome ונפרסות למשתמשי הקצה.

אם אתם מארחים קובץ CRX בשרת אינטרנט ומשתמשים במדיניות ארגונית כדי לדחוף אותו לניהול מכשירים, להמשיך לקרוא. צריך גם לקרוא את המאמרים אירוח ואריזה.

בעבר, כאשר הייתה תמיכה בתוספים שאינם מהחנות, ניתן היה להשתמש בקבצים הבינאריים המקוריים מעדכנים את התוסף בשלב הנעילה. עם זאת, תוספים שמתארחים בחנות האינטרנט של Chrome שעודכנו באמצעות מנגנון העדכון של Chrome, שהמפתחים לא שולטים בו. כדאי למפתחי תוספים נדרש להפעיל שיקול דעת בעת עדכון תוספות שתלויות בקובץ הבינארי המקורי (לדוגמה, תוספים מדור קודם באמצעות NPAPI).

סקירה כללית

  • מניפסט עשוי להכיל את הערך update_url שמצביע על מיקום לביצוע בדיקות עדכון.
  • התוכן שהוחזר בעקבות בדיקת עדכונים הוא מסמך XML של מניפסט העדכון, שבו מפורטים העדכונים האחרונים של תוסף.

כל כמה שעות הדפדפן בודק אם לאפליקציות או לתוספים שהותקנו יש כתובת URL לעדכון. עבור בכל אחד מהם, הוא שולח בקשה לכתובת ה-URL הזו ומחפש קובץ XML של מניפסט העדכון. אם העדכון במניפסט מצוין גרסה עדכנית יותר מזו שמותקנת, הדפדפן מוריד יתקין את הגרסה החדשה. כמו בעדכונים ידניים, יש לחתום על קובץ .crx החדש באותו אופן של המפתח הפרטי בתור הגרסה המותקנת כרגע.

עדכון כתובת ה-URL

אם אתם מארחים תוסף או אפליקציה משלכם, צריך להוסיף ערך update_url שדה manifest.json. למשל:

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

עדכון המניפסט

מניפסט העדכון שמוחזר על ידי השרת צריך להיות מסמך 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. מסוף מציג את מזהה האפליקציה כמחרוזת מצוטטת.
codebase

כתובת ה-URL של הקובץ .crx.

גרסה

משמש את הלקוח כדי לקבוע אם עליו להוריד את הקובץ .crx שצוין על ידי codebase. הוא צריך להתאים לערך של גרסה. בקובץ manifest.json של הקובץ .crx.

קובץ ה-XML של המניפסט לעדכון עשוי להכיל מידע על כמה סיומות, על ידי הכללת כמה סיומות רכיבים.

בדיקה

תדירות בדיקת העדכונים שמוגדרת כברירת מחדל היא כמה שעות, אבל אפשר לאלץ עדכון באמצעות בלחצן עדכן תוספים עכשיו בדף התוספים.

שימוש מתקדם: פרמטרים של בקשה

מנגנון העדכון האוטומטי הבסיסי נועד להפוך את העבודה בצד השרת לקלה כמו שחרור את קובץ ה-XML הסטטי לכל שרת אינטרנט פשוט כמו Apache, ולעדכן את קובץ ה-XML במהלך הפרסום גרסאות חדשות של התוספים שלך.

ייתכן שמפתחים מתקדמים יותר ירצו לנצל את העובדה שאנחנו מוסיפים פרמטרים בקשה למניפסט העדכון כדי לציין את מזהה התוסף ואת הגרסה שלו. ואז הם יוכלו להשתמש לעדכן את כתובת ה-URL של כל התוספים שלו, שמפנה לכתובת URL שמפעילה קוד דינמי בצד השרת של קובץ XML סטטי.

הפורמט של הפרמטרים של הבקשה הוא:

?x=_<extension_data>_

כאשר _<extension_data>_ היא מחרוזת בקידוד כתובת URL בפורמט:

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

לדוגמה, נניח שיש לכם שני תוספים, ששניהם מפנים לאותה כתובת URL לעדכון (http://test.com/extension_updates.php):

  • תוסף 1
    • מזהה: "aaaaaaaaaaaaaaaaaaaaaaaaaa"
    • גרסה: "1.1"
  • תוסף 2
    • מזהה: "bbbbbbbbbbbbbbbbbbbbbbbbb
    • גרסה: "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 ייחודית לעדכון. לגבי כולם לדוגמה, אם שני התוספים מותקנים אצל המשתמש, שתי הבקשות ממוזגות בקשה אחת:

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

אם מספר התוספים המותקנים שמשתמשים באותה כתובת URL לעדכון גדול מספיק בשביל בקשת GET כתובת האתר ארוכה מדי (יותר מ-2,000 תווים בערך), בבדיקת העדכונים מוצגות בקשות GET נוספות כמו הנחוצים.

שימוש מתקדם: גרסת דפדפן מינימלית

ככל שאנו מוסיפים ממשקי API למערכת התוספים, ייתכן שתרצו לפרסם גרסה מעודכנת גרסה של תוסף או אפליקציה שיפעלו רק עם גרסאות חדשות יותר של הדפדפן. למרות ש-Google Chrome עצמו מתעדכן באופן אוטומטי, אבל עשויים לחלוף כמה ימים עד שרוב בסיס המשתמשים מעודכן לכל גרסה חדשה נתונה. כדי להבטיח שעדכון מסוים יחול רק על 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 ומעלה.