برنامههای افزودنی که خارج از فروشگاه وب Chrome میزبانی میشوند، فقط توسط کاربران لینوکس قابل نصب هستند. این مقاله نحوه بسته بندی، میزبانی و به روز رسانی فایل های .crx
از یک سرور شخصی را شرح می دهد. اگر یک برنامه افزودنی یا طرح زمینه را صرفاً از طریق فروشگاه وب Chrome توزیع می کنید، با میزبانی و به روز رسانی فروشگاه وب مشورت کنید.
بسته بندی
برنامه های افزودنی و تم ها به عنوان فایل های .crx
ارائه می شوند. هنگام آپلود از طریق داشبورد برنامهنویس Chrome ، داشبورد فایل .crx
را بهطور خودکار ایجاد میکند. اگر در سرور شخصی منتشر شود، فایل .crx
باید به صورت محلی ایجاد شود یا از فروشگاه وب Chrome دانلود شود.
crx. را از فروشگاه وب Chrome دانلود کنید
اگر برنامه افزودنی در فروشگاه وب Chrome میزبانی شود، فایل .crx
را میتوان از داشبورد برنامهنویس دانلود کرد. افزونه را در قسمت «فهرستهای شما» پیدا کنید و روی «اطلاعات بیشتر» کلیک کنید. در پنجره بازشو، روی پیوند آبی main.crx
کلیک کنید تا آن را دانلود کنید.
فایل دانلود شده را می توان بر روی یک سرور شخصی میزبانی کرد. این امن ترین راه برای میزبانی محلی یک برنامه افزودنی است زیرا محتوای برنامه افزودنی توسط فروشگاه وب Chrome امضا می شود. این به شناسایی حملات احتمالی و دستکاری کمک می کند.
crx. را به صورت محلی ایجاد کنید
دایرکتوری های برنامه افزودنی در صفحه مدیریت برنامه های افزودنی به فایل های .crx
. تبدیل می شوند. به chrome://extensions/
در ominibox بروید، یا روی منوی Chrome کلیک کنید، نشانگر را روی «ابزارهای بیشتر» نگه دارید و سپس «افزونهها» را انتخاب کنید.
در صفحه مدیریت برنامههای افزودنی، با کلیک کردن روی سوئیچ کنار حالت برنامهنویس، حالت برنامهنویس را فعال کنید. سپس دکمه PACK EXTENSION را انتخاب کنید.
مسیر پوشه برنامه افزودنی را در قسمت دایرکتوری ریشه برنامه افزودنی مشخص کنید سپس روی دکمه PACK EXTENSION کلیک کنید. فیلد کلید خصوصی را برای یک بسته برای اولین بار نادیده بگیرید.
Chrome دو فایل ایجاد میکند، یک فایل .crx
و یک فایل .pem
که حاوی کلید خصوصی برنامه افزودنی است.
کلید خصوصی را گم نکنید! فایل .pem
را در مکانی مخفی و امن نگهداری کنید. برای به روز رسانی برنامه افزودنی مورد نیاز خواهد بود.
بسته crx. را به روز کنید
فایل .crx
یک پسوند را با افزایش شماره نسخه در manifest.json
به روز کنید.
{
...
"version": "1.5",
...
}
}
{
...
"version": "1.6",
...
}
}
به صفحه مدیریت افزونه ها برگردید و روی دکمه PACK EXTENSION کلیک کنید. مسیر دایرکتوری افزونه ها و محل کلید خصوصی را مشخص کنید.
این صفحه مسیری را برای برنامه افزودنی بسته بندی شده به روز شده ارائه می دهد.
بسته بندی از طریق خط فرمان
پسوندهای بسته را با فراخوانی 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
ارائه نمی شود : nosniff - فایل با یکی از انواع محتوای زیر ارائه می شود :
- رشته خالی
- "متن/ساده"
- "Application/octet-stream"
- "ناشناخته/ناشناخته"
- "برنامه/ناشناخته"
- "*/*"
- فایل با هدر 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>
مانیفست بهروزرسانی استفاده میکند:
اپید | شناسه برنامه افزودنی بر اساس هش کلید عمومی، همانطور که در بسته بندی توضیح داده شده است، تولید می شود. شناسه یک برنامه افزودنی در صفحه مدیریت برنامه های افزودنی نمایش داده می شود |
پایگاه کد | یک URL HTTPS به فایل .crx . |
نسخه | توسط کلاینت برای تعیین اینکه آیا باید فایل .crx مشخص شده توسط codebase را دانلود کند یا خیر استفاده می شود. باید با مقدار "نسخه" در فایل manifest.json فایل .crx . مطابقت داشته باشد. |
فایل XML مانیفست بهروزرسانی ممکن است حاوی اطلاعاتی درباره چندین پسوند با گنجاندن چندین عنصر <app> باشد.
تست کردن
دفعات بررسی بهروزرسانی پیشفرض چندین ساعت است، اما میتوان با استفاده از دکمه Update extensions now در صفحه مدیریت برنامههای افزودنی، بهروزرسانی را مجبور کرد.
با این کار بررسی همه افزونه های نصب شده شروع می شود.
استفاده پیشرفته: درخواست پارامترها
مکانیزم اصلی بهروزرسانی خودکار بهگونهای طراحی شده است که کار سمت سرور را به سادگی انداختن یک فایل 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
- شناسه: "آآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآ"
- نسخه: "1.1"
- پسوند 2
- شناسه: "بببببببببببببببببببببببببببببببببببببب"
- نسخه: "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 به روز رسانی یکسان به اندازه کافی زیاد باشد که URL درخواست GET بیش از حد طولانی باشد (بیش از 2000 کاراکتر یا بیشتر)، بررسی به روز رسانی درخواست های 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>
این تضمین میکند که کاربران فقط در صورتی که از Google Chrome نسخه 3.0.193.0 یا بالاتر استفاده میکنند، بهطور خودکار به نسخه 2 بهروزرسانی میشوند.