Thunderbird のアドオンを変更していて、javascript ファイルの 1 つにハードコードされたアドオンへのパスを見つけました。これは私にはずさんに思えたので、プログラムでこのパスを見つけることができなければならないと考えました。しかし、多くのグーグル検索の後、私はまだその質問に対する答えを見つけることができません.
install.rdf
Thunderbird アドオンのフォルダー (を含む) へのパスを見つける方法を知っていますか?
Thunderbird のアドオンを変更していて、javascript ファイルの 1 つにハードコードされたアドオンへのパスを見つけました。これは私にはずさんに思えたので、プログラムでこのパスを見つけることができなければならないと考えました。しかし、多くのグーグル検索の後、私はまだその質問に対する答えを見つけることができません.
install.rdf
Thunderbird アドオンのフォルダー (を含む) へのパスを見つける方法を知っていますか?
AddonManager
そのためのAPIを使用できます。
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("foo@example.com", function(addon)
{
var uri = addon.getResourceURI("install.rdf");
if (uri instanceof Components.interfaces.nsIFileURL)
{
var file = uri.file;
alert(file.parent.path);
}
});
参考:アドオン、nsIFileURL、nsIFile。
上記のコードの前提は、拡張機能がインストール時に解凍され、前のコードがおそらくに追加され<em:unpack>true</em:unpack>
ていることinstall.rdf
です。通常、このフラグは指定しないでください。拡張機能をディスクにパックしたままにしておくと、パフォーマンスが向上します。拡張機能からファイルを読み取る必要があるだけの場合XMLHttpRequest
は、ディスク上の物理ファイルである必要はなく、そのために使用できます。
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.getAddonByID("foo@example.com", 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();
});