আমরা চাই এক্সটেনশন এবং অ্যাপগুলিকে Google Chrome-এর মতোই কিছু কারণে স্বয়ংক্রিয়ভাবে আপডেট করা হোক: বাগ এবং নিরাপত্তা সংশোধন করা, নতুন বৈশিষ্ট্য বা কর্মক্ষমতা বর্ধিতকরণ যোগ করা এবং ব্যবহারকারীর ইন্টারফেস উন্নত করা।
আপনি যদি Chrome ডেভেলপার ড্যাশবোর্ড ব্যবহার করে প্রকাশ করেন, তাহলে আপনার এই পৃষ্ঠাটিকে উপেক্ষা করা উচিত। ক্রোম ওয়েব স্টোর জমাগুলি যেগুলি পূর্বরূপ পাস করে তা স্বয়ংক্রিয়ভাবে এক্সটেনশনের Chrome ওয়েব স্টোর আইটেম তালিকায় উপলব্ধ করা হয় এবং শেষ ব্যবহারকারীদের কাছে স্থাপন করা হয়৷
আপনি যদি একটি ওয়েব সার্ভারে একটি CRX ফাইল হোস্ট করেন এবং এটিকে পরিচালিত ডিভাইসগুলিতে পুশ করার জন্য এন্টারপ্রাইজ নীতিগুলি ব্যবহার করেন তবে পড়তে থাকুন৷ আপনার হোস্টিং এবং প্যাকেজিংও পড়া উচিত।
পূর্বে যখন অফ-স্টোর এক্সটেনশনগুলি সমর্থিত ছিল, তখন নেটিভ বাইনারি এবং এক্সটেনশন লক ধাপে আপডেট করা সম্ভব ছিল। যাইহোক, ক্রোম ওয়েব স্টোরে হোস্ট করা এক্সটেনশনগুলি Chrome আপডেট পদ্ধতির মাধ্যমে আপডেট করা হয় যা বিকাশকারীরা নিয়ন্ত্রণ করে না। এক্সটেনশন ডেভেলপারদের এমন এক্সটেনশনগুলি আপডেট করার বিষয়ে সতর্ক হওয়া উচিত যেগুলির নেটিভ বাইনারির উপর নির্ভরশীলতা রয়েছে (উদাহরণস্বরূপ, NPAPI ব্যবহার করে লিগ্যাসি এক্সটেনশনগুলি)৷
ওভারভিউ
- একটি ম্যানিফেস্টে একটি "update_url" ক্ষেত্র থাকতে পারে, যা আপডেট চেক করার জন্য একটি অবস্থান নির্দেশ করে৷
- একটি আপডেট চেক দ্বারা প্রত্যাবর্তিত বিষয়বস্তু একটি এক্সটেনশনের সর্বশেষ সংস্করণ তালিকাভুক্ত একটি আপডেট ম্যানিফেস্ট XML নথি৷
প্রতি কয়েক ঘণ্টা পর ব্রাউজার চেক করে যে কোনো ইনস্টল করা এক্সটেনশন বা অ্যাপের আপডেট URL আছে কিনা। প্রতিটির জন্য, এটি একটি আপডেট ম্যানিফেস্ট এক্সএমএল ফাইলের সন্ধানে সেই URL-এ একটি অনুরোধ করে৷ যদি আপডেট ম্যানিফেস্টে এমন একটি সংস্করণ উল্লেখ করা হয় যা ইনস্টল করা হয়েছে তার চেয়ে সাম্প্রতিকতম, ব্রাউজারটি নতুন সংস্করণটি ডাউনলোড এবং ইনস্টল করে। ম্যানুয়াল আপডেটের মতো, নতুন .crx
ফাইলটি বর্তমান ইনস্টল করা সংস্করণের মতো একই ব্যক্তিগত কী দিয়ে স্বাক্ষরিত হতে হবে।
URL আপডেট করুন
আপনি যদি নিজের এক্সটেনশন বা অ্যাপ হোস্ট করে থাকেন, তাহলে আপনাকে আপনার manifest.json
ফাইলে "update_url" ক্ষেত্র যোগ করতে হবে, যেমন:
{
"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 কনসোলে নিম্নলিখিত এক্সপ্রেশনটি লিখুন:
chrome.app.getDetails().id
। কনসোল অ্যাপের আইডি একটি উদ্ধৃত স্ট্রিং হিসাবে দেখায়।
- কোডবেস
.crx
ফাইলের একটি URL।- সংস্করণ
codebase
দ্বারা নির্দিষ্ট করা.crx
ফাইল ডাউনলোড করা উচিত কিনা তা নির্ধারণ করতে ক্লায়েন্ট দ্বারা ব্যবহৃত হয়। এটি.crx
ফাইলেরmanifest.json
ফাইলের "সংস্করণ"-এর মানের সাথে মেলে।
আপডেট ম্যানিফেস্ট XML ফাইলে একাধিক অন্তর্ভুক্ত করে একাধিক এক্সটেনশন সম্পর্কে তথ্য থাকতে পারে
টেস্টিং
ডিফল্ট আপডেট চেক ফ্রিকোয়েন্সি কয়েক ঘন্টা, কিন্তু আপনি এক্সটেনশন পৃষ্ঠার এক্সটেনশন এখনই আপডেট করুন বোতাম ব্যবহার করে একটি আপডেট জোর করতে পারেন৷
উন্নত ব্যবহার: অনুরোধ পরামিতি
বেসিক অটোআপডেট মেকানিজমটি সার্ভার-সাইডের কাজকে সহজ করে দেওয়ার জন্য ডিজাইন করা হয়েছে যেমন Apache-এর মতো যেকোনো প্লেইন ওয়েব সার্ভারে একটি স্ট্যাটিক XML ফাইল ড্রপ করা এবং আপনার এক্সটেনশনের নতুন সংস্করণ প্রকাশ করার সাথে সাথে সেই XML ফাইলটি আপডেট করা।
আরও উন্নত বিকাশকারীরা এই সত্যের সুবিধা নিতে ইচ্ছুক যে আমরা এক্সটেনশন আইডি এবং সংস্করণ নির্দেশ করার জন্য আপডেট ম্যানিফেস্টের অনুরোধে প্যারামিটার যোগ করি। তারপরে তারা তাদের সমস্ত এক্সটেনশনের জন্য একই আপডেট URL ব্যবহার করতে পারে, একটি স্ট্যাটিক এক্সএমএল ফাইলের পরিবর্তে গতিশীল সার্ভার-সাইড কোড চলমান একটি 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
যদি একই আপডেট ইউআরএল ব্যবহার করে ইনস্টল করা এক্সটেনশনের সংখ্যা যথেষ্ট বড় হয় যে একটি GET অনুরোধ URL খুব দীর্ঘ (2000টি অক্ষর বা তার বেশি), আপডেট চেক প্রয়োজনে অতিরিক্ত GET অনুরোধগুলি ইস্যু করে।
উন্নত ব্যবহার: সর্বনিম্ন ব্রাউজার সংস্করণ
যেহেতু আমরা এক্সটেনশন সিস্টেমে আরও API যোগ করি, এটি সম্ভব যে আপনি একটি এক্সটেনশন বা অ্যাপের একটি আপডেট সংস্করণ প্রকাশ করতে চান যা শুধুমাত্র ব্রাউজারের নতুন সংস্করণগুলির সাথে কাজ করবে৷ গুগল ক্রোম নিজেই স্বয়ংক্রিয়ভাবে আপডেট হওয়া সত্ত্বেও, ব্যবহারকারীর সংখ্যার অধিকাংশই যে কোনো প্রদত্ত নতুন রিলিজে আপডেট হওয়ার কয়েক দিন সময় নিতে পারে। একটি প্রদত্ত আপডেট শুধুমাত্র একটি নির্দিষ্ট সংস্করণে বা তার চেয়ে উচ্চতর 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 সংস্করণে স্বয়ংক্রিয়ভাবে আপডেট হবে৷