Linux هو النظام الأساسي الوحيد الذي يمكن لمستخدمي Chrome من خلاله تثبيت الإضافات التي تتم استضافتها خارج
سوق Chrome الإلكتروني توضّح هذه المقالة كيفية تجميع crx
واستضافتها وتعديلها.
من خادم ويب للأغراض العامة. إذا كنت توزّع إضافة أو مظهرًا فقط
من خلال سوق Chrome الإلكتروني، استشر استضافة متجر الويب
.
الحزمة
يتم عرض الإضافات والمظاهر كملفات .crx
. عند التحميل من خلال مطوّر برامج Chrome
لوحة البيانات، تنشئ لوحة البيانات ملف crx
تلقائيًا. في حال نشرها
على خادم شخصي، يجب إنشاء ملف crx
على الجهاز أو تنزيله من متصفّح Chrome
السوق الإلكتروني.
تنزيل ملف .crx من "سوق Chrome الإلكتروني"
في حال استضافة إضافة على "سوق Chrome الإلكتروني"، يمكن تنزيل ملف .crx
من "سوق Chrome الإلكتروني".
لوحة بيانات المطوِّر. حدِّد موقع الإضافة ضمن "بياناتك". وانقر على "مزيد من المعلومات" في جلسة المعمل،
النافذة المنبثقة، انقر على الرابط main.crx
الأزرق لتنزيلها.
ويمكن استضافة الملف الذي تم تنزيله على خادم شخصي. وهذه هي الطريقة الأكثر أمانًا لاستضافة حدث الإضافة محليًا، إذ سيتم توقيع محتوى الإضافة من خلال سوق Chrome الإلكتروني. هذا النمط يساعد في اكتشاف الهجمات المحتملة والتلاعب.
إنشاء crx .على الجهاز
يتم تحويل أدلة الإضافات إلى ملفات .crx
في صفحة إدارة الإضافات. الانتقال إلى
chrome://extensions/
في المربّع المتعدد الاستخدامات، أو انقر على قائمة Chrome، اضغط مع الاستمرار على مؤشر الماوس فوق "المزيد من الأدوات" ثم
حدد "الإضافات".
في صفحة إدارة الإضافات، فعِّل "وضع مطور البرامج" من خلال النقر على مفتاح التبديل بجانب وضع المطوِّر: بعد ذلك، انقر على الزر إضافة حزمة.
حدِّد المسار إلى مجلد الإضافة في حقل الدليل الجذري للإضافة، ثم انقر على زر إضافة حزمة. تجاهَل حقل المفتاح الخاص في حزمة المرة الأولى.
سينشئ Chrome ملفَّين، ملف .crx
وملف .pem
يتضمّن الملف
الخاص.
لا تفقد المفتاح الخاص. الاحتفاظ بملف ".pem
" في مكان سري وآمن هَتْكُونْ
مطلوبة من أجل تحديث الإضافة.
تحديث حزمة crx.
عدِّل ملف .crx
للإضافة من خلال زيادة رقم الإصدار في manifest.json
.
{
...
"version": "1.5",
...
}
}
{
...
"version": "1.6",
...
}
}
ارجع إلى صفحة إدارة الإضافات وانقر على زر إضافة حزمة. تحديد إلى دليل الإضافات وموقع المفتاح الخاص.
ستوفر الصفحة مسار الإضافة المجمعة التي تم تحديثها.
إنشاء حزمة من خلال سطر الأوامر
إضافات الحِزم في سطر الأوامر عن طريق استدعاء chrome.exe
استخدام --pack-extension
لتحديد موقع مجلد الإضافة وعلامة --pack-extension-key
لتحديد موقع ملف المفتاح الخاص للإضافة.
chrome.exe --pack-extension=C:\myext --pack-extension-key=C:\myext.pem
المضيف
يجب أن يستخدم الخادم الذي يستضيف ملفات .crx
عناوين HTTP مناسبة للسماح للمستخدمين بتثبيت
الإضافة بالنقر على أحد الروابط.
يعتبر Google Chrome ملفًا قابلاً للتثبيت إذا كان أي مما يلي صحيحًا:
- نوع المحتوى في الملف هو
application/x-chrome-extension
- لاحقة الملف هي
.crx
وكلا الأمرَين التاليَين صحيحان:- لا يتم عرض الملف باستخدام عنوان HTTP
X-Content-Type-Options: nosniff
- يتم عرض الملف مع أحد أنواع المحتوى التالية:
- سلسلة فارغة
"text/plain"
"application/octet-stream"
"unknown/unknown"
"application/unknown"
"\*/\*"
- لا يتم عرض الملف باستخدام عنوان HTTP
يرجع السبب الأكثر شيوعًا لتعذُّر التعرف على ملف قابل للتثبيت إلى أن الخادم يرسل
الرأس X-Content-Type-Options: nosniff
. السبب الثاني الأكثر شيوعًا هو أن الخادم يرسل
نوع محتوى غير معروف، نوع غير موجود في القائمة السابقة لإصلاح مشكلة عنوان HTTP، يمكنك إما تغيير
إعدادات الخادم أو محاولة استضافة ملف .crx
على خادم آخر
تعديل
يتحقّق المتصفّح كل بضع ساعات من الإضافات المثبّتة بحثًا عن عنوان URL للتحديث. لكل منها، إرسال طلب إلى عنوان URL هذا بحثًا عن ملف بيان تحديث XML.
- المحتوى الذي يعرضه البحث عن تحديثات هو مستند XML بيان تحديث يتضمن أحدث محتوى إصدار من الإضافة.
إذا كان بيان التحديث يشير إلى إصدار أحدث من الإصدار الذي تم تثبيته، فيمكن للمتصفح
بتنزيل الإصدار الجديد وتثبيته. يجب توقيع ملف .crx
الجديد كما هو الحال مع التعديلات اليدوية
باستخدام نفس المفتاح الخاص مثل الإصدار المثبت حاليًا.
عنوان URL الخاص بالتحديث
يجب أن تشتمل الإضافات المستضافة على خوادم خارج "سوق Chrome الإلكتروني" على الحقل update_url
في
ملف manifest.json
الخاص به.
{
"name": "My extension",
...
"update_url": "https://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='https://myhost.com/mytestextension/mte_v2.crx' version='2.0' />
</app>
</gupdate>
تم استعارة تنسيق XML هذا من الذي تستخدمه Omaha، وهي البنية الأساسية للتحديث في Google. تشير رسالة الأشكال البيانية
الإضافات السمات التالية للعنصرين <app>
و<updatecheck>
تحديث البيان:
- appid
- يتم إنشاء رقم تعريف الإضافة استنادًا إلى تجزئة المفتاح العام، كما هو موضّح في الحزمة. يتم عرض معرّف الإضافة في صفحة إدارة الإضافات.
- قاعدة الرموز
- عنوان URL يستخدم HTTPS يؤدي إلى ملف
.crx
- إصدار
- يستخدمه البرنامج لتحديد ما إذا كان يجب تنزيل ملف
.crx
المحدّد من خلالcodebase
. يجب أن تتطابق قيمة "version" مع قيمة "version" في الملفmanifest.json
الخاص بملف.crx
.
قد يحتوي ملف XML الخاص ببيان التعديل على معلومات حول إضافات متعدّدة من خلال تضمين عدة إضافات.
<app>
.
الاختبار
يبلغ معدل التكرار التلقائي للبحث عن التحديثات عدة ساعات، ولكن يمكن فرض التحديث باستخدام زر الإضافات الآن في صفحة إدارة الإضافات.
سيؤدي ذلك إلى بدء عمليات التحقّق من جميع الإضافات المثبّتة.
الاستخدام المتقدم: معلَمات الطلب
تم تصميم آلية التحديث التلقائي الأساسية لجعل العمل من جهة الخادم سهلاً مثل إزالة ملف XML ثابت على أي خادم ويب عادي، مثل Apache، وتعديل ملف XML هذا على أنّه جديد يتم طرح إصدارات من الإضافات.
قد يتحقّق المطوّرون الذين يستضيفون إضافات متعدّدة من معلَمات الطلب التي تشير إلى رقم تعريف الإضافة. والإصدار في طلب التحديث. يؤدي تضمين هذه المعلمات إلى السماح للإضافات بالتحديث من عنوان URL نفسه بتشغيل رمز ديناميكي من جهة الخادم بدلاً من ملف XML ثابت.
تنسيق معلَمات الطلب هو:
?x=EXTENSION_DATA
حيث يكون EXTENSION_DATA
عبارة عن سلسلة مرمّزة بعنوان URL من التنسيق:
id=EXTENSION_ID&v=EXTENSION_VERSION
على سبيل المثال، تشير إضافتان إلى عنوان URL نفسه للتحديث (https://test.com/extension_updates.php
):
- الإضافة 1
- المعرّف: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa،
- الإصدار: "1.1"
- الإضافة 2
- المعرّف: "bbbbbbbbbbbbbbbbbbbbbbbbbbc bbbbbbbbbbbbbbbb
- الإصدار: "0.4"
سيكون طلب تحديث كل إضافة فردية
https://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1
و
https://test.com/extension_updates.php?x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4
يمكن إدراج عدة إضافات في طلب واحد لكل عنوان URL فريد للتحديث. بالنسبة إلى العنصر السابق على سبيل المثال، إذا تم تثبيت الإضافتين لدى المستخدم، سيتم دمج الطلبين في طلب واحد:
https://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" إلى العنصر <app>
في استجابة التحديث.
<?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 أو أعلى.