मैं इस पेज के संबंध में एक नौकरी पर काम कर रहा हूँ

मैंने एक एनएसआईएस स्क्रिप्ट लिखी है जो क्रोम एक्सटेंशन को स्वतः स्थापित करने का प्रयास कर रही है। (क्यों? क्योंकि हमारे एक्सटेंशन को चेकबॉक्स के माध्यम से किसी अन्य उत्पाद स्थापना प्रवाह के साथ पेश किया जा सकता है, तो यदि उपयोगकर्ता हमारे एक्सटेंशन को जोड़ने के लिए चुनते हैं, तो यह एनएसआईएस साइलेंट इंस्टॉलेशन का उपयोग करके उपयोगकर्ता क्रोम ब्राउज़र पर स्वतः इंस्टॉल हो जाएगा)

मैंने बहुत सारे परिदृश्य की कोशिश की और मुझे मदद की ज़रूरत है, Google वेबसाइट पर, वे कहते हैं कि आप यह कर सकते हैं

  • वरीयताएँ JSON फ़ाइल का उपयोग करना
  • विंडोज रजिस्ट्री का उपयोग करना

वे यह भी कहते हैं कि "एक वरीयता फ़ाइल का उपयोग करना" में एक बग है (विंडोज नोट: जब तक बग 41902 ठीक नहीं हो जाता है, तब तक आप वरीयता फ़ाइल के बजाय विंडोज रजिस्ट्री का उपयोग करना चाह सकते हैं।)

अनुस्मारक: एक एक्सटेंशन जो स्वचालित रूप से स्थापित होता है उसे बाहरी एक्सटेंशन के रूप में जाना जाता है

  • इसलिए मैंने "विंडोज रजिस्ट्री का उपयोग करना" की कोशिश की

रजिस्ट्री के माध्यम से Google क्रोम एक्सटेंशन जोड़ने के लिए:

  • यह कुंजी जोड़ें: "HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\Extensions (मेरी एक्सटेंशन आईडी)"
  • .crx . के पथ के साथ "पथ" जोड़ें
  • एक्सटेंशन के संस्करण के साथ "संस्करण" जोड़ें

मैंने यही कोशिश की (एनएसआईएस स्क्रिप्ट का उपयोग करके):

  • अगर मैं एक रजिस्ट्री कुंजी जोड़ता हूं यह एक्सटेंशन इंस्टॉल करेगा, लेकिन अगर उपयोगकर्ता मैन्युअल रूप से अनइंस्टॉल करता है, तो क्रोम ब्लैकलिस्ट फ्लैग को चालू कर देता है और एक्सटेंशन को किसी अन्य स्क्रिप्ट के साथ फिर से इंस्टॉल नहीं किया जा सकता है। एकमात्र तरीका यह है कि उपयोगकर्ता मैन्युअल रूप से इंस्टॉल करता है। सबसे खराब, यदि उपयोगकर्ता मैन्युअल रूप से इंस्टॉल करता है और मैन्युअल रूप से अनइंस्टॉल करता है (यह ब्लैकलिस्ट फ़्लैग को बंद कर देगा), और जब क्रोम को पुनरारंभ किया जाएगा, तो यह एक्सटेंशन को स्वचालित रूप से (बिना किसी उपयोगकर्ता कार्रवाई के) पुनर्स्थापित करेगा क्योंकि रजिस्ट्री कुंजी अभी भी है।

  • अगर हम ब्राउजर को शुरू या बंद करते समय रजिस्ट्री कुंजी को हटाते हैं, तो एक अजीब तरीके से (सीआरएक्स के भीतर एक डीएलएल (एनपीएपीआई) का उपयोग करके), क्रोम ब्राउज़र के पुनरारंभ होने पर एक्सटेंशन निर्देशिका को स्वतः हटा देगा।

  • यदि मैं उपयोगकर्ता द्वारा एक्सटेंशन की स्थापना रद्द करने पर रजिस्ट्री कुंजी को हटाने का प्रबंधन करता हूं। हम ब्लैक लिस्टेड हो जाते हैं, इसलिए ऑटो-इंस्टॉलर तब तक काम नहीं करेगा जब तक कि उपयोगकर्ता मैन्युअल रूप से एक्सटेंशन को इंस्टॉल और अनइंस्टॉल करके ब्लैकलिस्ट को फ्लैग ऑफ नहीं कर देता।

  • अगर मैं "C:\Users\(username)\AppData\Local\Google\Chrome\User Data\Default\Extensions\(extensionID)\(version)_0\(मेरी फ़ाइलें यहां )", मुझे बहुत परेशानी होती है क्योंकि जैसे ही यह ब्राउज़र को रीस्टार्ट करेगा क्रोम मेरी फाइलों को डिलीट कर देगा।

क्या किसी को इस समस्या का सामना करना पड़ा है, और क्या करना है। मैं JSON फ़ाइल के साथ प्रयास करूंगा लेकिन जब तक बग ठीक नहीं हो जाता, रजिस्ट्री ही एकमात्र तरीका है।

किसी के लिए भी धन्यवाद जिसके पास यह सब पढ़ने का समय था! किसी भी मदद की सराहना की जाएगी, धन्यवाद!

5
developerGuile 4 मई 2011, 22:10
मैंने अभी JSON फ़ाइल के साथ प्रयास किया है और इसका रजिस्ट्री के समान व्यवहार है। बिल्कुल वैसा ही व्यवहार करता है। यह 'बाहरी एक्सटेंशन' के लिए सिर्फ एक अलग स्रोत है।
 – 
developerGuile
4 मई 2011, 22:43

3 जवाब

सबसे बढ़िया उत्तर

[2013-11-11]
[इस प्रश्न के उत्तर पुराने होने वाले हैं, इसलिए यहां एक अधिक अद्यतन उत्तर दिया गया है।]


एक हाल की पोस्ट< के अनुसार /strong> क्रोमियम ब्लॉग पर, निकट भविष्य में क्रोम एक्सटेंशन को ऑटो-इंस्टॉल करना एक विकल्प नहीं होगा:

जनवरी [2014] से Windows स्थिर और बीटा चैनलों पर, हमें Chrome वेब स्टोर में होस्ट किए जाने वाले सभी एक्सटेंशन की आवश्यकता होगी।

एक विकल्प के रूप में, डेवलपर और विक्रेता इनलाइन स्थापना सुविधा का उपयोग करने में सक्षम होंगे:

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


तो, मूल रूप से, आपको क्या करना है:

  1. अपने एक्सटेंशन को क्रोम वेब स्टोर पर होस्ट करें (वैकल्पिक रूप से इसे लिस्टिंग से छिपा कर रखें)।
  2. क्या आपके इंस्टॉलर ने आपकी साइट पर किसी वेबपेज की ओर इशारा करते हुए क्रोम ब्राउज़र विंडो खोली है।
  3. उस पृष्ठ पर उपयोगकर्ता के लिए विस्तार की स्थापना प्रक्रिया शुरू करने के लिए सभी आवश्यक जानकारी और डेटा है। (यहां मुख्य अवधारणा यह है कि उपयोगकर्ता को स्थापना प्रक्रिया आरंभ करनी होगी, उदाहरण के लिए एक बटन क्लिक करके।

इनलाइन इंस्टॉलेशन कैसे काम करता है:

आपकी साइट पर जिस HTML पृष्ठ से आप इनलाइन स्थापना करना चाहते हैं, उस अनुभाग में उपयोगकर्ता द्वारा स्थापित किए जा सकने वाले आइटम का संदर्भ देने वाले एक या अधिक टैग होने चाहिए। प्रत्येक टैग में निम्न प्रारूप होना चाहिए:

<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/itemID">

वास्तव में इनलाइन स्थापना शुरू करने के लिए, chrome.webstore.install(url, SuccessCallback, विफलता कॉलबैक) फ़ंक्शन को कॉल किया जाना चाहिए। इस फ़ंक्शन को केवल उपयोगकर्ता हावभाव के जवाब में ही कॉल किया जा सकता है, उदाहरण के लिए एक क्लिक ईवेंट हैंडलर के भीतर; एक अपवाद फेंक दिया जाएगा यदि यह नहीं है।

(जोर मेरा)

इनलाइन इंस्टॉल सुविधा के बारे में अधिक जानकारी।

2
gkalpak 11 नवम्बर 2013, 19:18

एक आसान तरीका है... जब चेकबॉक्स पर क्लिक किया जाता है, तो इस कोड को background page से चलाएँ:

chrome.tabs.create({ url:"FILEPATH.crx" } );

इच्छित एक्सटेंशन जिसे आप इंस्टॉल करना चाहते हैं, (.crx फ़ाइल) या तो नेट पर होस्ट किया जा सकता है या आपके मूल एक्सटेंशन फ़ोल्डर के अंदर हो सकता है... आपको अपने manifest में tabs अनुमति की आवश्यकता होगी।

0
David 12 मई 2011, 11:45
3
लेकिन वह पहली बार में कोई एक्सटेंशन इंस्टॉल नहीं कर सकता है?
 – 
Toby
7 पद 2011, 03:02

"विंडोज एप्लिकेशन डेवलपर्स को उपयोगकर्ताओं से क्रोम के भीतर से क्रोम एक्सटेंशन इंस्टॉल करने के लिए कहना चाहिए। उपयोगकर्ताओं को आपके विंडोज एप्लिकेशन से संबंधित क्रोम एक्सटेंशन इंस्टॉल करने की अनुमति देने का एक शानदार तरीका उपयोगकर्ताओं को आपकी वेबसाइट से लिंक करना और इनलाइन इंस्टॉलेशन।"

पूर्ण ब्लॉग पोस्ट भी देखें

0
idleberg 10 जुलाई 2013, 17:03
मैंने देखा कि ब्लॉग पोस्ट के लिंक में कोई समस्या थी - इसे ठीक कर दिया गया। यह सब समझाना चाहिए।
 – 
idleberg
24 जुलाई 2013, 15:45