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

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

تمثّل هذه السمة عنوان URL لملف .crx.

إصدار

يستخدمها العميل لتحديد ما إذا كان يجب تنزيل ملف .crx الذي تم تحديده من قِبل codebase. ويجب أن تتطابق مع قيمة "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
    • المعرّف: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    • الإصدار: "1.1"
  • الإضافة 2
    • المعرّف: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb".
    • الإصدار: "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 نفسه للتحديث كبيرًا بما يكفي لأن يكون عنوان URL لطلب GET طويلاً للغاية (أكثر من 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 إلا إذا كانوا يستخدمون الإصدار 3.0.193.0 أو إصدارًا أحدث من Google Chrome.