0
我正在修改thunderbird的插件,並在其中一個javascript文件中找到硬編碼插件的路徑。這對我來說似乎很渺茫,我認爲必須有可能以編程方式找出這條路徑。但是,經過多番討論後,我仍然無法找到這個問題的答案。找出Thunderbird API中插件文件夾的路徑
您是否知道我如何才能找到Thunderbird插件的文件夾(包含install.rdf
)的路徑?
我正在修改thunderbird的插件,並在其中一個javascript文件中找到硬編碼插件的路徑。這對我來說似乎很渺茫,我認爲必須有可能以編程方式找出這條路徑。但是,經過多番討論後,我仍然無法找到這個問題的答案。找出Thunderbird API中插件文件夾的路徑
您是否知道我如何才能找到Thunderbird插件的文件夾(包含install.rdf
)的路徑?
可以使用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);
}
});
參考:Addon,nsIFileURL,nsIFile。
上述代碼中的假設是擴展在安裝時解包,您的前任可能將<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();
});
輝煌,謝謝! – janoliver
有一件事:我需要運行一個python腳本,所以第二段代碼並不適合我。但是,這仍然是一個開始,我會研究這一點。再次感謝。 – janoliver
@janoliver:是的,如果你想運行代碼,那麼你必須得到解壓縮的擴展名,或者你必須先將Python腳本複製到臨時目錄中。 –