2012-10-18 25 views
0

我正在修改thunderbird的插件,並在其中一個javascript文件中找到硬編碼插件的路徑。這對我來說似乎很渺茫,我認爲必須有可能以編程方式找出這條路徑。但是,經過多番討論後,我仍然無法找到這個問題的答案。找出Thunderbird API中插件文件夾的路徑

您是否知道我如何才能找到Thunderbird插件的文件夾(包含install.rdf)的路徑?

回答

2

可以使用AddonManager API爲:

Components.utils.import("resource://gre/modules/AddonManager.jsm"); 

AddonManager.getAddonByID("[email protected]", function(addon) 
{ 
    var uri = addon.getResourceURI("install.rdf"); 
    if (uri instanceof Components.interfaces.nsIFileURL) 
    { 
    var file = uri.file; 
    alert(file.parent.path); 
    } 
}); 

參考:AddonnsIFileURLnsIFile

上述代碼中的假設是擴展在安裝時解包,您的前任可能將<em:unpack>true</em:unpack>添加到install.rdf。通常不應該指定這個標誌,而在磁盤上打包的擴展性能更好。如果你只需要讀你擴展名的文件,你可以使用XMLHttpRequest對於不要求它在磁盤上的物理文件:

Components.utils.import("resource://gre/modules/AddonManager.jsm"); 

AddonManager.getAddonByID("[email protected]", function(addon) 
{ 
    var uri = addon.getResourceURI("example.txt"); 
    var request = new XMLHttpRequest("GET", uri.spec); 
    request.addEventListener("load", function() 
    { 
    alert(request.responseText); 
    }, false); 
    request.send(); 
}); 
+0

輝煌,謝謝! – janoliver

+0

有一件事:我需要運行一個python腳本,所以第二段代碼並不適合我。但是,這仍然是一個開始,我會研究這一點。再次感謝。 – janoliver

+0

@janoliver:是的,如果你想運行代碼,那麼你必須得到解壓縮的擴展名,或者你必須先將Python腳本複製到臨時目錄中。 –