अपने-आप अपडेट हो रहा है

हम चाहते हैं कि एक्सटेंशन और ऐप्लिकेशन, खुद Google Chrome की तरह ही कुछ वजहों से अपने-आप अपडेट हो जाएं: गड़बड़ियां और सुरक्षा से जुड़े समाधानों को शामिल करें, नई सुविधाएं जोड़ें या परफ़ॉर्मेंस को बेहतर बनाएं, और यूज़र इंटरफ़ेस पर काम करता है.

अगर आपको Chrome डेवलपर डैशबोर्ड का इस्तेमाल करके पब्लिश करना है, तो इस पेज को अनदेखा करें. Chrome वेब झलक पास करने वाले स्टोर सबमिशन, एक्सटेंशन के Chrome वेब स्टोर आइटम सूची पर अपने-आप उपलब्ध हो जाते हैं और असली उपयोगकर्ताओं के लिए डिप्लॉय किए जाते हैं.

अगर CRX फ़ाइल को किसी वेब सर्वर पर होस्ट किया जा रहा है और उसे मैनेज किए जा रहे पेज पर पुश करने के लिए एंटरप्राइज़ नीतियों का इस्तेमाल किया जा रहा है डिवाइसों पर पढ़ते रहें. आपको होस्टिंग और पैकेजिंग भी पढ़ना चाहिए.

पहले जब ऑफ़-स्टोर एक्सटेंशन काम करते थे, तब नेटिव बाइनरी और एक्सटेंशन को लॉक करने के चरण में अपडेट करना होगा. हालांकि, Chrome वेब स्टोर पर होस्ट किए गए एक्सटेंशन को Chrome अपडेट प्रणाली के ज़रिए अपडेट किया जाता है, जिसे डेवलपर नियंत्रित नहीं करते हैं. एक्सटेंशन डेवलपर को यह करना चाहिए ऐसे एक्सटेंशन को अपडेट करते समय सावधान रहें जो नेटिव बाइनरी पर निर्भर होते हैं. उदाहरण के लिए, NPAPI का उपयोग करने वाले लेगसी एक्सटेंशन हैं.

खास जानकारी

  • मेनिफ़ेस्ट में "update_url" हो सकता है फ़ील्ड, जो अपडेट जांच करने के लिए किसी स्थान की ओर इशारा करता है.
  • अपडेट की जांच करने पर मिला कॉन्टेंट एक अपडेट मेनिफ़ेस्ट एक्सएमएल दस्तावेज़ है, जिसमें सबसे नए की जानकारी दी गई है किसी एक्सटेंशन का वर्शन है.

ब्राउज़र, हर कुछ घंटों में यह जांच करता है कि इंस्टॉल किए गए किसी एक्सटेंशन या ऐप्लिकेशन का यूआरएल अपडेट है या नहीं. इसके लिए और उनमें से किसी एक अपडेट मेनिफ़ेस्ट XML फ़ाइल को ढूंढते हुए उस यूआरएल को अनुरोध भेजता है. अगर अपडेट मेनिफ़ेस्ट में ऐसे वर्शन के बारे में बताया गया है जो इंस्टॉल किए गए वर्शन के मुकाबले नया है, ब्राउज़र डाउनलोड होता है और इंस्टॉल करता है. मैन्युअल अपडेट की तरह ही, नई .crx फ़ाइल को भी उसी तरीके से हस्ताक्षर किया जाना चाहिए निजी कुंजी का इस्तेमाल करें.

यूआरएल अपडेट करें

अगर आप अपना खुद का एक्सटेंशन या ऐप्लिकेशन होस्ट कर रहे हैं, तो आपको "update_url" जोड़ना होगा फ़ील्ड को अपने manifest.json फ़ाइल का उदाहरण:

{
  "name": "My extension",
  ...
  "update_url": "http://myhost.com/mytestextension/updates.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>

यह एक्सएमएल फ़ॉर्मैट उसी फ़ॉर्मैट से लिया गया है जिसका इस्तेमाल Google के अपडेट इन्फ़्रास्ट्रक्चर, Omaha करता है. यहां जाएं: ज़्यादा जानकारी के लिए, http://code.google.com/p/omaha/ पर जाएं. एक्सटेंशन सिस्टम, इनका इस्तेमाल करता है अपडेट मेनिफ़ेस्ट के और एलिमेंट के लिए एट्रिब्यूट:

appid

एक्सटेंशन या ऐप्लिकेशन आईडी, जो सार्वजनिक पासकोड के हैश के आधार पर जनरेट होता है. इसकी जानकारी यहां दी गई है पैकेजिंग. एक्सटेंशन पेज पर जाकर, किसी एक्सटेंशन या Chrome ऐप्लिकेशन का आईडी देखा जा सकता है (chrome://extensions).

हालांकि, होस्ट किए गए ऐप्लिकेशन एक्सटेंशन पेज पर सूची में नहीं होते हैं. इनका इस्तेमाल करके, किसी भी ऐप्लिकेशन का आईडी ढूंढा जा सकता है यहां बताया गया तरीका अपनाएं:

  • ऐप्लिकेशन खोलें. ऐसा करने के लिए, 'नया टैब' पेज पर मौजूद आइकॉन पर क्लिक करें.
  • JavaScript कंसोल खोलें. आप पाना आइकन पर क्लिक करके और टूल > चुनकर ऐसा कर सकते हैं JavaScript कंसोल.
  • JavaScript कंसोल में यह एक्सप्रेशन डालें: chrome.app.getDetails().id. कॉन्टेंट बनाने कंसोल ऐप्लिकेशन के आईडी को कोट की गई स्ट्रिंग के तौर पर दिखाता है.
कोड बेस

.crx फ़ाइल का यूआरएल.

वर्शन

इसका इस्तेमाल क्लाइंट यह तय करने के लिए करता है कि उसे .crx फ़ाइल को डाउनलोड करना चाहिए या नहीं codebase. यह "version" के मान से मेल खाना चाहिए .crx फ़ाइल की manifest.json फ़ाइल में.

अपडेट मेनिफ़ेस्ट एक्सएमएल फ़ाइल में एक से ज़्यादा एक्सटेंशन को शामिल करके, उनके बारे में जानकारी हो सकती है एलिमेंट.

टेस्ट करना

डिफ़ॉल्ट अपडेट जांच फ़्रीक्वेंसी कई घंटों की होती है, लेकिन आप एक्सटेंशन पेज पर एक्सटेंशन अभी अपडेट करें बटन.

बेहतर इस्तेमाल: अनुरोध पैरामीटर

बुनियादी ऑटो-अपडेट की प्रक्रिया इस तरह से डिज़ाइन की गई है कि सर्वर साइड काम करना उतना ही आसान हो जाता है, जितना कि किसी स्टैटिक एक्सएमएल फ़ाइल को किसी भी सादे वेब सर्वर जैसे कि Apache पर अपलोड करें और उस एक्सएमएल फ़ाइल को रिलीज़ करते समय अपडेट करें अपने एक्सटेंशन के नए वर्शन की जानकारी मिल सकती है.

ज़्यादा ऐडवांस डेवलपर शायद इस बात का फ़ायदा लेना चाहें कि हम अपडेट मेनिफ़ेस्ट के लिए अनुरोध सबमिट करें. तब वे उसी अपने सभी एक्सटेंशन के लिए, यूआरएल को अपडेट करें. यह यूआरएल, डाइनैमिक सर्वर साइड कोड पर चलने वाले यूआरएल पर ले जाएगा की एक स्टैटिक एक्सएमएल फ़ाइल होगी.

अनुरोध के पैरामीटर का फ़ॉर्मैट ऐसा होता है:

?x=_<extension_data>_

जहां _<extension_data>_, फ़ॉर्मैट की यूआरएल-एन्कोडेड स्ट्रिंग होती है:

_id=<id>_&v=_<version>_

उदाहरण के लिए, मान लें कि आपके पास दो एक्सटेंशन हैं, जिनमें से दोनों एक ही अपडेट यूआरएल पर ले जाते हैं (http://test.com/extension_updates.php):

  • एक्सटेंशन 1
    • आईडी: "aaaaaaaaaaaaaaaaaaaaaaaaaaa"
    • वर्शन: "1.1"
  • एक्सटेंशन 2
    • आईडी: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    • वर्शन: "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

हर यूनीक अपडेट यूआरएल के लिए, एक ही अनुरोध में कई एक्सटेंशन डाले जा सकते हैं. ऊपर दिए गए विकल्पों के लिए उदाहरण के लिए, अगर किसी उपयोगकर्ता के पास दोनों एक्सटेंशन इंस्टॉल हैं, तो दोनों अनुरोधों को एक ही अनुरोध:

http://test.com/extension_updates.php?x=id%3Daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa%26v%3D1.1&x=id%3Dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb%26v%3D0.4

अगर एक ही अपडेट यूआरएल का इस्तेमाल करके इंस्टॉल किए गए एक्सटेंशन की संख्या, जीईटी अनुरोध की तुलना में काफ़ी ज़्यादा है यूआरएल बहुत लंबा है (2,000 वर्णों से ज़्यादा), अपडेट की जांच में दूसरे जीईटी अनुरोध इस तरह शामिल किए गए हैं ज़रूरी है.

बेहतर इस्तेमाल: ब्राउज़र का कम से कम वर्शन

जैसे-जैसे हम एक्सटेंशन सिस्टम में और एपीआई जोड़ते जा रहे हैं, हो सकता है कि आप अपडेट किया गया कोई अपडेट रिलीज़ करना चाहें किसी एक्सटेंशन या ऐप्लिकेशन का वर्शन होना चाहिए जो सिर्फ़ ब्राउज़र के नए वर्शन के साथ काम करेगा. हालांकि 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 का उपयोग कर रहे होने पर ही उन्हें वर्शन 2 में अपने आप अपडेट करेंगे 3.0.193.0 या उसके बाद के वर्शन.