স্বয়ংক্রিয় আপডেট

আমরা চাই যে এক্সটেনশন এবং অ্যাপগুলি স্বয়ংক্রিয়ভাবে আপডেট করা হোক Google Chrome-এর মতো একই কারণে: বাগ এবং নিরাপত্তা সংশোধন, নতুন বৈশিষ্ট্য বা কর্মক্ষমতা বর্ধিতকরণ যোগ করতে এবং ব্যবহারকারীর ইন্টারফেস উন্নত করতে।

আপনি যদি Chrome ডেভেলপার ড্যাশবোর্ড ব্যবহার করে প্রকাশ করেন, তাহলে আপনার এই পৃষ্ঠাটি উপেক্ষা করা উচিত। ক্রোম ওয়েব স্টোর জমাগুলি যেগুলি পূর্বরূপ পাস করে তা স্বয়ংক্রিয়ভাবে এক্সটেনশনের Chrome ওয়েব স্টোর আইটেম তালিকায় উপলব্ধ করা হয় এবং শেষ ব্যবহারকারীদের কাছে স্থাপন করা হয়৷

আপনি যদি একটি ওয়েব সার্ভারে একটি CRX ফাইল হোস্ট করেন এবং এটিকে পরিচালিত ডিভাইসগুলিতে পুশ করার জন্য এন্টারপ্রাইজ নীতিগুলি ব্যবহার করেন তবে পড়তে থাকুন৷ আপনার হোস্টিং এবং প্যাকেজিংও পড়া উচিত।

পূর্বে যখন অফ-স্টোর এক্সটেনশনগুলি সমর্থিত ছিল, তখন লক ধাপে বাইনারি এবং এক্সটেনশন আপডেট করা সম্ভব ছিল। যাইহোক, Chrome ওয়েব স্টোরে হোস্ট করা এক্সটেনশনগুলি 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/ দেখুন। এক্সটেনশন সিস্টেম আপডেট ম্যানিফেস্টের <app> এবং <updatecheck> উপাদানগুলির জন্য নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করে:

appid

প্যাকেজিং- এ বর্ণিত পাবলিক কী-এর হ্যাশের উপর ভিত্তি করে তৈরি করা এক্সটেনশন বা অ্যাপ আইডি। আপনি এক্সটেনশন পৃষ্ঠায় গিয়ে একটি এক্সটেনশন বা Chrome অ্যাপের আইডি খুঁজে পেতে পারেন ( chrome://extensions )।

হোস্ট করা অ্যাপগুলি অবশ্য এক্সটেনশন পৃষ্ঠায় তালিকাভুক্ত নয়। আপনি নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করে যে কোনও অ্যাপের আইডি খুঁজে পেতে পারেন:

  • অ্যাপটি খুলুন। আপনি নতুন ট্যাব পৃষ্ঠায় এটির আইকনে ক্লিক করে এটি করতে পারেন।
  • জাভাস্ক্রিপ্ট কনসোল খুলুন। আপনি রেঞ্চ আইকনে ক্লিক করে এবং টুলস > JavaScript কনসোল নির্বাচন করে এটি করতে পারেন।
  • JavaScript কনসোলে নিম্নলিখিত অভিব্যক্তিটি লিখুন: chrome.app.getDetails().id । কনসোল অ্যাপের আইডি একটি উদ্ধৃত স্ট্রিং হিসাবে দেখায়।
কোডবেস

.crx ফাইলের একটি URL।

সংস্করণ

codebase দ্বারা নির্দিষ্ট করা .crx ফাইল ডাউনলোড করা উচিত কিনা তা নির্ধারণ করতে ক্লায়েন্ট দ্বারা ব্যবহৃত হয়। এটি .crx ফাইলের manifest.json ফাইলের "সংস্করণ"-এর মানের সাথে মেলে।

আপডেট ম্যানিফেস্ট XML ফাইলে একাধিক <app> উপাদান অন্তর্ভুক্ত করে একাধিক এক্সটেনশন সম্পর্কে তথ্য থাকতে পারে।

টেস্টিং

ডিফল্ট আপডেট চেক ফ্রিকোয়েন্সি কয়েক ঘন্টা, কিন্তু আপনি এক্সটেনশন পৃষ্ঠার এক্সটেনশন এখনই আপডেট করুন বোতাম ব্যবহার করে একটি আপডেট জোর করতে পারেন৷

উন্নত ব্যবহার: অনুরোধ পরামিতি

বেসিক অটো আপডেট মেকানিজম সার্ভার-সাইড কাজ কমানোর জন্য ডিজাইন করা হয়েছে। আপনি শুধুমাত্র 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 সংস্করণে প্রযোজ্য হবে তা নিশ্চিত করতে একটি নির্দিষ্ট সংস্করণে বা তার চেয়ে বেশি, আপনি আপনার আপডেট ম্যানিফেস্টে <app> উপাদানটিতে "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 সংস্করণে স্বয়ংক্রিয়ভাবে আপডেট হবে৷