ما میخواهیم برنامههای افزودنی و برنامهها به دلایلی مانند خود 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، زیرساخت بهروزرسانی گوگل، قرض گرفته شده است. برای جزئیات بیشتر به http://code.google.com/p/omaha/ مراجعه کنید. سیستم برنامههای افزودنی از ویژگیهای زیر برای عناصر <app>
و <updatecheck>
مانیفست بهروزرسانی استفاده میکند:
- اپید
برنامه افزودنی یا شناسه برنامه، بر اساس هش کلید عمومی، همانطور که در Packaging توضیح داده شده است. میتوانید شناسه یک برنامه افزودنی یا برنامه Chrome را با رفتن به صفحه برنامههای افزودنی ( chrome://extensions ) پیدا کنید.
با این حال، برنامه های میزبانی شده در صفحه برنامه های افزودنی فهرست نشده اند. با استفاده از مراحل زیر می توانید شناسه هر برنامه ای را پیدا کنید:
- برنامه را باز کنید. می توانید این کار را با کلیک کردن روی نماد آن در صفحه برگه جدید انجام دهید.
- کنسول جاوا اسکریپت را باز کنید. می توانید این کار را با کلیک کردن روی نماد آچار و انتخاب Tools > JavaScript Console انجام دهید.
- عبارت زیر را در کنسول جاوا اسکریپت وارد کنید:
chrome.app.getDetails().id
. کنسول شناسه برنامه را به عنوان یک رشته نقل قول نشان می دهد.
- پایگاه کد
یک URL به فایل
.crx
.- نسخه
توسط کلاینت برای تعیین اینکه آیا باید فایل
.crx
مشخص شده توسطcodebase
را دانلود کند یا خیر استفاده می شود. باید با مقدار "نسخه" در فایلmanifest.json
فایل.crx
. مطابقت داشته باشد.
فایل XML مانیفست بهروزرسانی ممکن است حاوی اطلاعاتی درباره چندین پسوند با گنجاندن چندین عنصر <app>
باشد.
تست کردن
دفعات بررسی بهروزرسانی پیشفرض چندین ساعت است، اما میتوانید با استفاده از دکمه «بهروزرسانی الان» صفحه افزونهها، بهروزرسانی را مجبور کنید.
استفاده پیشرفته: درخواست پارامترها
مکانیزم اصلی بهروزرسانی خودکار برای به حداقل رساندن کار سمت سرور طراحی شده است. شما فقط یک فایل XML ایستا را به هر وب سروری مانند Apache اضافه می کنید و با انتشار نسخه های جدید افزونه های خود، آن فایل XML را به روز می کنید.
توسعه دهندگان پیشرفته تر ممکن است بتوانند از این واقعیت استفاده کنند که ما پارامترهایی را به درخواست مانیفست به روز رسانی اضافه می کنیم تا شناسه و نسخه برنامه افزودنی را نشان دهیم. سپس آنها می توانند از همان URL به روز رسانی برای همه برنامه های افزودنی خود استفاده کنند و به جای یک فایل XML ایستا، به یک URL در حال اجرا کد سمت سرور پویا اشاره می کنند.
فرمت پارامترهای درخواستی:
?x=_<extension_data>_
جایی که _<extension_data>_
یک رشته کد شده با URL با فرمت است:
_id=<id>_&v=_<version>_
برای مثال، فرض کنید دو افزونه دارید که هر دو به یک URL بهروزرسانی اشاره میکنند ( http://test.com/extension_updates.php
):
- پسوند 1
- شناسه: "آآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآ"
- نسخه: "1.1"
- پسوند 2
- شناسه: "بببببببببببببببببببببببببببببببببببببب"
- نسخه: "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 اضافی را در صورت لزوم صادر می کند.
استفاده پیشرفته: حداقل نسخه مرورگر
همانطور که ما API های بیشتری را به سیستم برنامه های افزودنی اضافه می کنیم، ممکن است بخواهید نسخه به روز شده یک برنامه افزودنی یا برنامه را منتشر کنید که فقط با نسخه های جدیدتر مرورگر کار می کند. در حالی که خود گوگل کروم بهطور خودکار بهروزرسانی میشود، ممکن است چند روز طول بکشد تا اکثریت پایگاه کاربران به نسخههای جدید بهروزرسانی شوند. برای اطمینان از اینکه یک بهروزرسانی داده شده فقط برای نسخههای 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>
این تضمین میکند که کاربران فقط در صورتی که از Google Chrome نسخه 3.0.193.0 یا بالاتر استفاده میکنند، بهطور خودکار به نسخه 2 بهروزرسانی میشوند.