2016-04-30 4 views
0

を使用することはできません:ブートストラップマニフェスト私は、<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Providing_Command-Line_Options" rel="nofollow">this</a>例によりprrovidingコマンドラインオプションを試し そして、私は、ブラウザのコンソールでこのエラーを取得する「コンポーネント」ディレクティブ

マニフェスト「コンポーネント」ディレクティブを使用することはできませんブートストラップ
  • ブートストラップされたマニフェストは、 'contract'ディレクティブを使用できません。
  • ブートストラップされたマニフェストは 'category'ディレクティブを使用できません。

のparams:

[install.rdfの]

<?xml version="1.0" encoding="utf-8"?> 
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> 
    <Description about="urn:mozilla:install-manifest"> 
      <em:id>@spidersprint</em:id> 
      <em:type>2</em:type> 
      <em:bootstrap>true</em:bootstrap> 
      <em:unpack>false</em:unpack> 
      <em:version>1.0.0</em:version> 
      <em:name>SpiderSprint</em:name> 
      <em:description>SpiderSprint extension (for self-using).</em:description> 
      <em:creator>Alexander Macedonian</em:creator> 
      <em:iconURL>resource://spidersprint/data/icon/s32.png</em:iconURL> 
      <em:icon64URL>resource://spidersprint/data/icon/s64.png</em:icon64URL> 

      <em:targetApplication> 
      <Description> 
       <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> 
       <em:minVersion>38.0a1</em:minVersion> 
       <em:maxVersion>*</em:maxVersion> 
      </Description> 
      </em:targetApplication> 
    </Description> 
</RDF> 

[にchrome.manifest]:

component {75ceb908-0807-4395-affb-e0792ac4c548} components/commandlinehandler.js 
contract @spidersprint/commandlinehandler;1 {75ceb908-0807-4395-affb-e0792ac4c548} 
category command-line-handler CommandLineHandler @spidersprint/commandlinehandler;1 

[-no-remote -p Developer -jsconsole -ssprint:1137403

は、ここに私のファイルの内容ですcommandlinehandler.js]

let {CC,Cc,Ci,Cu,Cr,components} = require('chrome'); 

Cu.import("resource://gre/modules/XPCOMUtils.jsm"); 
Cu.import("resource://gre/modules/Services.jsm"); 
const CHROME_URI = "resource://spidersprint/data/"; 

function openWindow(aChromeURISpec, aArgument) { 
    Services.ww.openWindow(null, aChromeURISpec, "_blank", 
     "chrome,menubar,toolbar,status,resizable,dialog=no", aArgument); 
} 

function CommandLineHandler() {}; 

CommandLineHandler.prototype = { 
    classDescription: "myAppHandler", 
    classID: components.ID("{75ceb908-0807-4395-affb-e0792ac4c548}"), 
    contractID: "@spidersprint/commandlinehandler;1", 
    _xpcom_categories: [{ 
     category: "command-line-handler", 
     entry: "s-ssprint" 
    }], 

    QueryInterface: XPCOMUtils.generateQI([ 
     Ci.nsICommandLineHandler 
    ]), 

    handle : function clh_handle(cmdLine) 
    { 
     try { 
      var uristr = cmdLine.handleFlagWithParam("viewapp", false); 
      if (uristr) { 
       var uri = cmdLine.resolveURI(uristr); 
       openWindow(CHROME_URI, uri); 
       cmdLine.preventDefault = true; 
      } 
     } 
     catch (e) { 
      Cu.reportError("incorrect parameter passed to -viewapp on the command line."); 
     } 

     if (cmdLine.handleFlag("ssprint", false)) { 
      openWindow(CHROME_URI, null); 
      cmdLine.preventDefault = true; 
     } 
    }, 

    helpInfo : " -ssprint    Open My Application\n" + 
     " -viewapp <uri>  View and edit the URI in My Application,\n" + 
     "      wrapping this description\n" 
}; 

var NSGetFactory = XPCOMUtils.generateNSGetFactory([CommandLineHandler]); 

答えて

0

この例では、(廃止予定の)xulオーバーレイ拡張タイプにのみ有効なクロムマニフェストを使用しています。ブートストラップされた拡張モジュールでは、代わりにbootstrap.jsを提供してから、追加のモジュールをロードするためにCu.importを使用する必要があります。

コード移行ガイドについては、How to convert an overlay extension to restartlessを参照してください。

SDK extension APIsを使用するには、もう1つステップをスキップしてください。本質的には、より安定したAPIを提供する特別な形式のブートストラップ拡張です。

+0

わかりました。それでは、ブートストラップファイルを編集するにはどうしたらいいですか? "jpm xpi"はブートストラップファイルを自動で作成し、それをxpiファイルに圧縮するので、 – Macedonian

+0

XULオーバーレイは*まだ*廃止されていません。発表されているのは、将来的にそれらを廃止する予定であるということです(今から約1年後に指定された時間枠、IIRC)。 – Makyen

+0

@Macedonian、自分でbootstrap.jsを作成するだけで、jpmはすでに存在する場合(再起動しないaddon)、存在しない場合は作成します(sdk addons)。 – the8472

関連する問題

 関連する問題