ক্রোম ওয়েব স্টোরের বাইরে হোস্ট করা এক্সটেনশনগুলি শুধুমাত্র লিনাক্স ব্যবহারকারীরা ইনস্টল করতে পারেন৷ এই নিবন্ধটি বর্ণনা করে কিভাবে একটি ব্যক্তিগত সার্ভার থেকে .crx
ফাইল প্যাকেজ, হোস্ট এবং আপডেট করা যায়। যদি শুধুমাত্র Chrome ওয়েব স্টোরের মাধ্যমে একটি এক্সটেনশন বা থিম বিতরণ করা হয়, তাহলে ওয়েবস্টোর হোস্টিং এবং আপডেট করার পরামর্শ নিন।
প্যাকেজিং
এক্সটেনশন এবং থিম .crx
ফাইল হিসাবে পরিবেশিত হয়। Chrome ডেভেলপার ড্যাশবোর্ডের মাধ্যমে আপলোড করার সময়, ড্যাশবোর্ড স্বয়ংক্রিয়ভাবে .crx
ফাইল তৈরি করে। একটি ব্যক্তিগত সার্ভারে প্রকাশিত হলে, .crx
ফাইলটি স্থানীয়ভাবে তৈরি করতে হবে বা Chrome ওয়েব স্টোর থেকে ডাউনলোড করতে হবে৷
Chrome ওয়েব স্টোর থেকে .crx ডাউনলোড করুন
ক্রোম ওয়েব স্টোরে একটি এক্সটেনশন হোস্ট করা থাকলে, .crx
ফাইলটি ডেভেলপার ড্যাশবোর্ড থেকে ডাউনলোড করা যেতে পারে। "আপনার তালিকা" এর অধীনে এক্সটেনশনটি সনাক্ত করুন এবং "আরো তথ্য" এ ক্লিক করুন। পপআপ উইন্ডোতে, এটি ডাউনলোড করতে নীল main.crx
লিঙ্কে ক্লিক করুন।
ডাউনলোড করা ফাইলটি একটি ব্যক্তিগত সার্ভারে হোস্ট করা যেতে পারে। এটি স্থানীয়ভাবে একটি এক্সটেনশন হোস্ট করার সবচেয়ে নিরাপদ উপায় কারণ এক্সটেনশনের বিষয়বস্তু Chrome ওয়েব স্টোর দ্বারা স্বাক্ষরিত হবে৷ এটি সম্ভাব্য আক্রমণ এবং টেম্পারিং সনাক্ত করতে সাহায্য করে।
স্থানীয়ভাবে .crx তৈরি করুন
এক্সটেনশন ম্যানেজমেন্ট পৃষ্ঠায় এক্সটেনশন ডিরেক্টরি .crx
ফাইলে রূপান্তরিত হয়। ওমিনিবক্সে chrome://extensions/
এ নেভিগেট করুন, অথবা Chrome মেনুতে ক্লিক করুন, "আরো টুলস" এর উপর হোভার করুন তারপর "এক্সটেনশন" নির্বাচন করুন।
এক্সটেনশন ম্যানেজমেন্ট পৃষ্ঠায়, বিকাশকারী মোডের পাশের টগল সুইচটিতে ক্লিক করে বিকাশকারী মোড সক্ষম করুন৷ তারপর প্যাক এক্সটেনশন বোতামটি নির্বাচন করুন।
এক্সটেনশন রুট ডিরেক্টরি ক্ষেত্রে এক্সটেনশনের ফোল্ডারের পাথ নির্দিষ্ট করুন তারপর প্যাক এক্সটেনশন বোতামে ক্লিক করুন। প্রথম-বারের প্যাকেজের জন্য ব্যক্তিগত কী ক্ষেত্রটিকে উপেক্ষা করুন।
Chrome দুটি ফাইল তৈরি করবে, একটি .crx
ফাইল এবং একটি .pem
ফাইল, যেটিতে এক্সটেনশনের ব্যক্তিগত কী রয়েছে৷
ব্যক্তিগত চাবি হারাবেন না! .pem
ফাইলটি একটি গোপন এবং নিরাপদ স্থানে রাখুন; এক্সটেনশন আপডেট করার জন্য এটি প্রয়োজন হবে।
একটি .crx প্যাকেজ আপডেট করুন
manifest.json
এ সংস্করণ সংখ্যা বাড়িয়ে একটি এক্সটেনশনের .crx
ফাইল আপডেট করুন।
{
...
"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
এর সাথে পরিবেশিত হয় না - ফাইলটি নিম্নলিখিত বিষয়বস্তুর প্রকারগুলির মধ্যে একটি দিয়ে পরিবেশিত হয় :
- খালি স্ট্রিং
- "টেক্সট/প্লেইন"
- "অ্যাপ্লিকেশন/অক্টেট-স্ট্রীম"
- "অজানা/অজানা"
- "আবেদন/অজানা"
- "*/*"
- ফাইলটি HTTP হেডার
একটি ইনস্টলযোগ্য ফাইল সনাক্ত করতে ব্যর্থ হওয়ার সবচেয়ে সাধারণ কারণ হল সার্ভারটি হেডার পাঠায় X-Content-Type-Options: nosniff
। দ্বিতীয় সবচেয়ে সাধারণ কারণ হল যে সার্ভার একটি অজানা বিষয়বস্তুর ধরন পাঠায়—যা আগের তালিকায় নেই। একটি HTTP হেডার সমস্যা সমাধান করতে, হয় সার্ভারের কনফিগারেশন পরিবর্তন করুন অথবা অন্য সার্ভারে .crx
ফাইল হোস্ট করার চেষ্টা করুন।
আপডেট করা হচ্ছে
প্রতি কয়েক ঘন্টা, ব্রাউজার একটি আপডেট URL এর জন্য ইনস্টল করা এক্সটেনশনগুলি পরীক্ষা করে৷ প্রতিটির জন্য, এটি একটি আপডেট ম্যানিফেস্ট এক্সএমএল ফাইলের সন্ধানে সেই URL-এ একটি অনুরোধ করে৷
- একটি আপডেট চেক দ্বারা প্রত্যাবর্তিত বিষয়বস্তু একটি এক্সটেনশনের সর্বশেষ সংস্করণ তালিকাভুক্ত একটি আপডেট ম্যানিফেস্ট XML নথি৷
যদি আপডেট ম্যানিফেস্টে এমন একটি সংস্করণ উল্লেখ করা হয় যা ইনস্টল করা হয়েছে তার চেয়ে সাম্প্রতিকতম, ব্রাউজারটি নতুন সংস্করণ ডাউনলোড এবং ইনস্টল করে। ম্যানুয়াল আপডেটের মতো, নতুন .crx
ফাইলটি বর্তমান ইনস্টল করা সংস্করণের মতো একই ব্যক্তিগত কী দিয়ে স্বাক্ষরিত হতে হবে।
URL আপডেট করুন
Chrome ওয়েবস্টোরের বাইরে সার্ভারে হোস্ট করা এক্সটেনশনগুলিকে অবশ্যই তাদের manifest.json
ফাইলে update_url
ক্ষেত্র অন্তর্ভুক্ত করতে হবে৷
{
"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 ফর্ম্যাটটি ওমাহা , Google-এর আপডেট পরিকাঠামো দ্বারা ব্যবহৃত যেটি থেকে ধার করা হয়েছে৷ এক্সটেনশন সিস্টেম আপডেট ম্যানিফেস্টের <app>
এবং <updatecheck>
উপাদানগুলির জন্য নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করে:
appid | প্যাকেজিং -এ বর্ণিত পাবলিক কী-এর হ্যাশের উপর ভিত্তি করে এক্সটেনশন আইডি তৈরি করা হয়। এক্সটেনশন ম্যানেজমেন্ট পৃষ্ঠায় একটি এক্সটেনশনের আইডি প্রদর্শিত হয় |
কোডবেস | .crx ফাইলের একটি HTTPS URL। |
সংস্করণ | codebase দ্বারা নির্দিষ্ট করা .crx ফাইল ডাউনলোড করা উচিত কিনা তা নির্ধারণ করতে ক্লায়েন্ট দ্বারা ব্যবহৃত হয়। এটি .crx ফাইলের manifest.json ফাইলের "সংস্করণ"-এর মানের সাথে মেলে। |
আপডেট ম্যানিফেস্ট XML ফাইলে একাধিক <app> উপাদান অন্তর্ভুক্ত করে একাধিক এক্সটেনশন সম্পর্কে তথ্য থাকতে পারে।
টেস্টিং
ডিফল্ট আপডেট চেক ফ্রিকোয়েন্সি কয়েক ঘন্টা, কিন্তু এক্সটেনশন ম্যানেজমেন্ট পৃষ্ঠার আপডেট এক্সটেনশন এখন বোতাম ব্যবহার করে একটি আপডেট জোর করে করা যেতে পারে।
এটি সমস্ত ইনস্টল করা এক্সটেনশনের জন্য পরীক্ষা শুরু করবে।
উন্নত ব্যবহার: অনুরোধ পরামিতি
বেসিক অটোআপডেট মেকানিজম ডিজাইন করা হয়েছে সার্ভার-সাইডের কাজকে সহজ করে তোলার মতোই যে কোনো প্লেইন ওয়েব সার্ভারে একটি স্ট্যাটিক এক্সএমএল ফাইল ড্রপ করা, যেমন অ্যাপাচি, এবং সেই XML ফাইলটিকে নতুন এক্সটেনশন সংস্করণ প্রকাশ করা হলে আপডেট করা।
একাধিক এক্সটেনশন হোস্ট করা বিকাশকারীরা অনুরোধের পরামিতি পরীক্ষা করতে পারে, যা আপডেট অনুরোধে এক্সটেনশন আইডি এবং সংস্করণ নির্দেশ করে। এই পরামিতিগুলি সহ এক্সটেনশানগুলিকে স্ট্যাটিক XML ফাইলের পরিবর্তে গতিশীল সার্ভার-সাইড কোড চলমান একই URL থেকে আপডেট করার অনুমতি দেয়৷
অনুরোধের পরামিতিগুলির বিন্যাস হল:
?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
যদি একই আপডেট ইউআরএল ব্যবহার করে ইনস্টল করা এক্সটেনশনের সংখ্যা যথেষ্ট বড় হয় যে একটি 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 সংস্করণে স্বয়ংক্রিয়ভাবে আপডেট হবে৷