2011-07-13 10 views
3

アドオンをアンインストールするときにリンクを開きたいので、このためにはコードとイベントが必要です。Firefoxのアドオンのアンインストール時にブラウザでページを開く方法

誰かがこれについて知っていたら、私を助けてください。

現在、これはアンインストール時に行っています。しかしgBrowser.addTab(Website + 'uninstalled=true&token=' + uniqueguid);はここで働いていません。

var UninstallObserver = { 
_uninstall : false, 
observe : function(subject, topic, data) { 

      //===Write Code here for Delete File Uninsatll Time 
      //alert("Uninstall Time Delete File"); 
      var Filename = "webmail"; 
      // Delete all template file. 

try{ 
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); 
var finished = ""; 
pref.setBoolPref("myextension.install.just_installed", false); 
} 
catch(e) {} 


      gBrowser.addTab(Website + 'uninstalled=true&token=' + uniqueguid); 
      var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); 

      file.initWithPath(Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path+"\\DefaultTemplate.txt"); 
      if (file.exists() == true) 
      { 
       var aFile = Components.classes["@mozilla.org/file/local;1"].createInstance(); 
       if (aFile instanceof Components.interfaces.nsILocalFile) 
       {        
        aFile.initWithPath(Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path + "\\DefaultTemplate.txt"); 
        aFile.remove(false); 
       } 
      }   
     //=======  
    if (topic == "em-action-requested") { 
    subject.QueryInterface(Components.interfaces.nsIUpdateItem); 

    if (subject.id == MY_EXTENSION_UUID) 
    { 

     if (data == "item-uninstalled") 
     { 
        //==Delete File Whenever Uninstall   
         //alert("When Uninatall"); 
        //=========== 
     data = "item-cancel-action"; 
     this._uninstall = true; 
     } 

     if (data == "disabled") 
     { 
     // alert("You are not allow to disable SysLocker."); 
     this._uninstall = true; 
     } 

     else if (data == "item-cancel-action") 
     { 
     this._uninstall = false; 
     } 
    } 
    } 
    else if (topic == "quit-application-granted") 
    { 

    data = "item-cancel-action"; 
    if (this._uninstall) 
    {  
     //Code here to delete registry  
    } 
    this.unregister(); 
    } 
}, 

register : function() { 

var observerService = 
    Components.classes["@mozilla.org/observer-service;1"]. 
    getService(Components.interfaces.nsIObserverService); 

observerService.addObserver(this, "em-action-requested", false); 
observerService.addObserver(this, "quit-application-granted", false); 

}, 

unregister : function() { 

    var observerService = 
    Components.classes["@mozilla.org/observer-service;1"]. 
     getService(Components.interfaces.nsIObserverService); 

    observerService.removeObserver(this,"em-action-requested"); 
    observerService.removeObserver(this,"quit-application-granted"); 
} 

} 

おかげ

答えて

0

0)これはどのような拡張機能ですか?私はそれが再起動を必要とする通常の拡張だと仮定します。 bootstrapped (restartless) extensions have their own uninstall notification

1)MDC docsによると、em-action-requestedの通知はFirefox 4以降で別の通知に置き換えられました。Firefox 4または3.6でテストしていますか?

2)gBrowser.addTabは「ここではうまくいかない」とはどのくらい正確ですか?コードはその点に達していますか? Error Consoleにメッセージがありますか?そのページのセットアップのヒントを参照してください。コードがXPCOMコンポーネント(正しい)に置かれている場合は、まずブラウザウィンドウへの参照を取得する必要があります。 Working with windows in chrome codeを参照してください。

+0

ありがとうNickolay、アンインストールイベントを取得できますが、私の問題はここでgBrowser.addTabを実行できないことです。 –

+0

これに関連するものが見つかった場合は、私を助けてください。 –

+0

@Bhavik Goyal:私の(2)の下で質問や提案が見えなかったようです。何かを明確にすることはできますか? – Nickolay

0

私は拡張子が実際にアンインストールされるまで、EM-アクション要求されたトピックは、再起動時に起きた、オブザーバーに掲載されていることとは思わない(それはrestartless拡張されていないと仮定)。いつ新しいタブが表示されると思いますか?私は、アンインストールのトピックが起動されたときにprefを設定し、起動時にそのprefをチェックすることを試みます。それがあれば、あなたのタブを表示してprefを削除することができます。

+0

ツールバーをアンインストールした後でも、自分のコードを実行できると思いますか?もしそうなら、私にいくつかのリンクを教えてもらえますか? –

+0

良い点。 :-) Firefox 4+の拡張機能はありますか?その場合、アドオンリスナーAPIは完全に変更されています([docs](https://developer.mozilla.org/en/Addons/Add-on_Manager/AddonManager#addAddonListener())を参照))。 –

+0

私は '要求された'通知が遅れているとは思わない。 https://developer.mozilla.org/en/Code_snippets/Miscellaneous#Receiving_notification_before_an_extension_is_disabled_and.2for_uninstalledは私に同意しているようです。 – Nickolay

関連する問題