2013-08-30 2 views
5

मैं निम्नलिखित मेरी फ़ायरफ़ॉक्स ऐड-ऑन में कोड का टुकड़ा:फ़ायरफ़ॉक्स एडन: एडन को अनइंस्टॉल किया जा रहा है जब वरीयताओं को कैसे हटाएं?

var firstrun = Services.prefs.getBoolPref("extensions.CustomButton.firstrun"); 

if (firstrun) { 
    // alert("first run"); 
    Services.prefs.setBoolPref("extensions.CustomButton.firstrun", false); 
    installButton("nav-bar", "custom-button-1"); 
} else { 
    // alert("not first run"); 
} 

addon_dir में/चूक/वरीयताओं/pref.js, मैं निम्नलिखित स्ट्रिंग है:

pref("extensions.CustomButton.firstrun", true); 

एडऑन के चलता है पहली बार, उपरोक्त कोड इसे समझता है और टूलबार पर एक बटन स्थापित करता है। साथ ही, यह निम्नलिखित स्ट्रिंग को profile_dir/prefs.js में जोड़ता है:

user_pref("extensions.CustomButton.firstrun", false); 

यह ठीक काम करता है। परेशान करने वाली एकमात्र चीज यह है कि जब मैं एडन को अनइंस्टॉल करता हूं तो profile_dir/prefs.js में यह स्ट्रिंग साफ़ नहीं होती है। इसलिए, यदि मैं दूसरी बार इस एडन को स्थापित करता हूं, तो पहले मान मूल्य गलत है, और बटन टूलबार में नहीं जोड़ा गया है।

प्रश्न: क्या एडन वरीयताओं को हटा देना संभव है (मेरे मामले में, user_pref ("extension.CustomButton.firstrun", false);) जब एडन अनइंस्टॉल किया जाता है?

एक नोट: मैंने this article पढ़ा है, लेकिन अभी भी यह नहीं पता कि किस घटना का इंतजार है। कोई कामकाजी उदाहरण? मेरा मानना ​​है कि यह एडन रचनाकारों के लिए एक आम ऑपरेशन है और मुझे आश्चर्य है कि इन मामलों को विस्तार से समझाते हुए कोई लेख नहीं है।

+0

इसके अलावा वहाँ (https://developer.mozilla.org/ [जो एक लंबित स्थापना रद्द करें रद्द उपयोगकर्ता] के किनारे मामला है:

यहाँ क्या मैं अपने ऐड-ऑन में उपयोग है एन-यूएस/डॉक्स/मोज़िला/एड-ऑन/ऐड-ऑन_Manager/Code_Samples # Listening_for_addon_uninstall) – paa

+0

यदि आपने अपनी समस्या हल की है, तो आपको इसे एक उत्तर के रूप में हल करने के तरीके को जोड़ना चाहिए और इसे स्वीकार करना चाहिए। –

+0

पा, धन्यवाद, मैंने इसे पढ़ लिया है। मेरे मामले में, यह महत्वपूर्ण नहीं है, क्योंकि अगर वे अपने दिमाग बदलते हैं तो यह कोई बड़ा सौदा नहीं है। लेकिन फिर भी धन्यवाद! – Racoon

उत्तर

0
AddonManager.addAddonListener({ 
    onUninstalling: function(addon){ 
     // alert("uninstalling!"); 
     Services.prefs.setBoolPref("extensions.CustomButton.firstrun", true); 
    } 
    }); 
+0

तो आपको किस स्क्रिप्ट में यह जोड़ना है? मुझे यहां एक ही समस्या है: [मैं उपयोगकर्ता शाखा में वरीयताओं को कैसे सेट करूं और अनइंस्टॉल करने पर उन्हें अनसेट कर दूं?] (Http://stackoverflow.com/q/23985279) – rubo77

+2

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

2

my Add-On में, जहां मैं इस पर स्थापित सेट:

const {Cc,Ci} = require("chrome"); 
var pref = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch); 
pref.setIntPref("network.http.response.timeout", 3600*24); 

मैं इसे इस तरह हल किया, कि मेरे main.js में मैं अंत में इस कोड को कहा:

exports.onUnload = function(reason) { 
    //called when add-on is 
    // uninstalled 
    // disabled 
    // shutdown 
    // upgraded 
    // downgraded 
    pref.clearUserPref("network.http.response.timeout"); 
}; 

कि एडन को अक्षम और अनइंस्टॉल करने पर काम किया।

नोट: यह अभी भी सही नहीं है, टिप्पणियां देखें। मुझे इस पर काम करना होगा ...

+0

आपको वास्तव में 'clearUserPref', rubo77 घोषित करने की आवश्यकता है।आप में से उन लोगों के लिए इस विधि का उपयोग करना चाहते हैं, @ rubo77 के मूल प्रश्न का मेरा उत्तर देखें: http://stackoverflow.com/questions/23985279/set-preferences-in-the-user-branch-and-unset-them- ऑन-अनइंस्टॉल – jwir3

+0

मुझे फ़ंक्शन 'clearUserPref' घोषित करने की आवश्यकता नहीं है, लेकिन मैंने 'pref' – rubo77

+0

की घोषणा को जोड़ा है शायद मुझे गलत था: मुझे लगता है कि यह इस तरह काम करता है लेकिन यह एक अच्छा समाधान नहीं है। मैं इसे कुछ दिनों में घोषित करने की कोशिश करूंगा ... – rubo77

2

बूटस्ट्रैप एडॉन्स के लिए uninstall() प्रक्रिया है, लेकिन इसके लिए आपको ट्रिगर करने के लिए install() प्रक्रिया का उपयोग करना होगा, बस इसे दो तर्क पारित करना होगा और फ़ंक्शन को खाली छोड़ना काम करेगा। https://gist.github.com/Noitidart/e0d3c21ab38822fbfd17

function uninstall(aData, aReason) { 
    console.info('UNINSTALLING ZOOMR reason = ', aReason); 
    if (aReason == ADDON_UNINSTALL) { //have to put this here because uninstall fires on upgrade/downgrade too 
     //this is real uninstall 
     var prefPrefix = '[email protected]'; 
     console.log('deleting branch of: ' + prefPrefix); 
     Services.prefs.deleteBranch(prefPrefix); 
    } 
} 
संबंधित मुद्दे