التحديث التلقائي

نريد أن يتم تحديث الإضافات والتطبيقات تلقائيًا لبعض الأسباب نفسها مثل 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 هذا من الذي استخدمته أوماها، وهي البنية الأساسية للتحديث في Google. عرض http://code.google.com/p/omaha/ لمزيد من التفاصيل يستخدم نظام الإضافات ما يلي: السمات الخاصة بعناصر و في بيان التحديث:

appid

الإضافة أو رقم تعريف التطبيق، اللذين يتم إنشاؤهما استنادًا إلى تجزئة المفتاح العام، كما هو موضّح في الحزمة: يمكنك العثور على رقم تعريف إضافة أو تطبيق Chrome من خلال الانتقال إلى صفحة "الإضافات". (chrome://extensions).

ومع ذلك، لا يتم إدراج التطبيقات المستضافة في صفحة "الإضافات". يمكنك العثور على رقم تعريف أي تطبيق باستخدام الخطوات التالية:

  • افتح التطبيق. يمكنك إجراء ذلك بالنقر على رمز الصفحة في صفحة "علامة تبويب جديدة".
  • افتح وحدة تحكّم JavaScript. يمكنك إجراء ذلك بالنقر على رمز مفتاح الربط واختيار الأدوات > وحدة تحكُّم JavaScript:
  • أدخِل التعبير التالي في وحدة تحكّم JavaScript: chrome.app.getDetails().id. تشير رسالة الأشكال البيانية رقم تعريف التطبيق كسلسلة ذات علامتَي اقتباس.
قاعدة الرموز

عنوان URL لملف .crx.

إصدار

يستخدمه البرنامج لتحديد ما إذا كان يجب تنزيل ملف .crx الذي حدّده codebase يجب أن تتطابق قيمة "version" مع قيمة "version" في الملف 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
    • المعرّف: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa،
    • الإصدار: "1.1"
  • الإضافة 2
    • المعرّف: "bbbbbbbbbbbbbbbbbbbbbbbbbbc bbbbbbbbbbbbbbbb
    • الإصدار: "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 عنوان URL طويل جدًا (أكثر من 2000 حرف أو ما يقارب ذلك)، تُصدر عملية البحث عن التحديثات طلبات GET إضافية اللازمة.

الاستخدام المتقدّم: الحد الأدنى لإصدار المتصفّح

نظرًا لإضافة المزيد من واجهات برمجة التطبيقات إلى نظام الإضافات، قد تحتاج إلى إصدار تحديث إصدار الإضافة أو التطبيق الذي لا يعمل إلا مع الإصدارات الأحدث من المتصفح. بينما تستخدم 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 أو أعلى.