0

独自の Thunderbird 拡張機能を開発しています。この拡張機能は、Thunderbird メールの添付ファイルとして .xml ファイルを追加します (非常にうまく機能します)。私の唯一の問題は、相対パスの使い方がわからないことです。

次のようになります。

var file= 'C:\\...[… \\…]...\\chrome\\VHitG2.xml';
var attachments = [];
    attachments.push(FileToAttachment(file));
    AddAttachments(attachments); 

拡張機能が別のパスにインストールされている場合、拡張機能は機能しません。
相対パスの使い方を知っている人はいますか?

4

2 に答える 2

0

拡張機能のファイルの URL を取得するために、非常に遠回りな方法を使用しました。

Components.utils.import("resource://gre/modules/FileUtils.jsm");
var test1 = FileUtils.getFile("CurProcD", ["VHitG2.xml"]);
var test2 = FileUtils.getFile("CurProcD", ["VHitG.xml"]);
var file1 = test1.path.replace(/VHitG2.xml/i, "extensions\\custom-toolbar-button@example.com\\chrome\\VHitG2.xml");
var file2 = test2.path.replace(/VHitG.xml/i, "extensions\\custom-toolbar-button@example.com\\chrome\\VHitG.xml");
var attachment1 = file1.replace(/\\/g, "\\\\");
var attachment2 = file2.replace(/\\/g, "\\\\");
于 2014-03-07T11:45:04.187 に答える
0

このFileToAttachment()関数は魔法のようなものではなく、実際には非常に単純です。拡張機能の一部である静的ファイルについて話していると思います - のような URL でアクセスできるはずchrome://myextension/content/VHitG2.xmlです。次に、その URL を使用して自分でnsIMsgAttachmentインスタンスを簡単に作成できます。

var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"]
                           .createInstance(Components.interfaces.nsIMsgAttachment);
attachment.url = "chrome://myextension/content/VHitG2.xml";
AddAttachments([attachment]);

そのために拡張機能をアンパックしてインストールする必要はないことに注意してください。ディスク上に実際のファイルは必要ありません。

于 2014-03-05T19:26:42.260 に答える