XULRunner tips

by 2 contributors:

XULRunner の一般的な質問について。これは作業中のドキュメントです。

Extension Manager

拡張機能をインストールできるようにするには、まず最初に application.ini で拡張機能マネージャーを有効にする必要があります。 XULRunner 1.8.0 はアプリケーションのディレクトリから拡張を読み込む事ができません; XULRunner のディレクトリとユーザプロファイルのディレクトリはチェックされます。次の pref をセットする事で XPInstall ダイアログ、拡張機能マネージャー、そしてテーママネージャーが動作するでしょう:

pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/x...allConfirm.xul");
pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/...ul?type=themes");
pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/...ype=extensions");
pref("xpinstall.dialog.progress.type.skin", "Extension:Manager-themes");
pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager-extensions");
pref("extensions.update.enabled", true);
pref("extensions.update.interval", 86400);
pref("extensions.dss.enabled", false);
pref("extensions.dss.switchPending", false);
pref("extensions.ignoreMTimeChanges", false);
pref("extensions.logging.enabled", false);
pref("general.skins.selectedSkin", "classic/1.0");
// NB these point at AMO
pref("extensions.update.url", "chrome://mozapps/locale/extensions/e...ons.properties");
pref("extensions.getMoreExtensionsURL", "chrome://mozapps/locale/extensions/e...ons.properties");
pref("extensions.getMoreThemesURL", "chrome://mozapps/locale/extensions/e...ons.properties");

Useful Chrome URLs

branding で要求されるほとんどのものです。 Most of these require branding.

WindowURLWindow Type
拡張機能マネージャー chrome://mozapps/content/extensions/...ype=extensions Extension:Manager-extensions
テーママネージャー chrome://mozapps/content/extensions/...ul?type=themes Extension:Manager-themes
JavaScript Console chrome://global/content/console.xul global:console
about:config chrome://global/content/config.xul

Developer Extensions

--Tlaurenzo 17:34, 17 March 2006 (PST) これは拡張機能を開発する一つの方法です。Venkman を起動させる方法及び拡張機能開発者によるXULRunner アプリで動く拡張についての私の blog post を見てください。

Venkman

  • カスタムビルドもしくは互換性のある拡張機能が必要<1.8.0.1 向けのダウンロード可能な venkman/domi ?>
  • application.iniの id と version に合うように install.rdf を互換性があるように書き換えが必要
  • venkman を起動させるメソッドが必要(通常はメインの XUL ファイルをオーバーレイします。同じようなコードがFirefox や Suite などにあります。)
  • toOpenWindowByType() 関数を定義する必要があります。私は動作する断片をこのblogで見つけました。他に良い提案はありますか?
  • 他に何かあります?

DOM Inspector

venkmanと同じです

Component Viewer

まず第一にカスタムビルドが必要です。他に何か?

Extension Developer's Extension

Extension Developer's Extension は役に立つツールで、Live XUL Editor や JavaScript Shell といった機能があります。

この拡張機能をあなたのアプリケーションにインストールするには、install.rdfをハックする必要があります(上記参照)。おそらく、JS Shellやこの拡張で提供されている機能を開くための menuitem を作りたいと思うでしょう。

Branding

Branding はプロダクト固有の情報(例えば、プロダクト名、ベンダー、そしてロゴ)を含むchrome package です。

いくつかの XULRunner のコンポーネント (特に、拡張機能マネージャー) は branding に依存しているため、<tt>chrome://branding/locale/brand.dtd</tt> と <tt>chrome://branding/locale/brand.properties</tt> に特定の文字列を見つかる事を期待しています。

これらの依存性を満たしているため、Firefox の <tt>brand.dtd</tt>/<tt>brand.properties</tt> を <tt>chrome/locale/branding</tt> フォルダに保存する事ができ、適当にいじってみて、 次の行をあなたの chrome manifestに追加する事で <tt>branding</tt> を ローカルプロバイダのレジストします:

locale branding en-US chrome/locale/branding/

branding ファイルの配置位置は気にしなくて良く、manifest に適切にレジストをすれば良いです。

In ''~.mozconfig'': ac_add_options --enable-branding=? branding location ?

Making Windows display correct application name and icon when buttons are grouped

標準では、Windowsのタスクバーは同じプロセスの window をスペースを省略するために一つのボタンにまとめます。このボタンは通常は "xulrunner.exe" と呼ばれ、 XULRunner のアイコンを持ちます。起動したアプリケーションの名称を表示させる二つのアプローチがあります:

  • あなた自身でXULRunnerをコンパイルする場合: mozilla/xulrunner/app に module.ver ファイルを作成して次の内容とします: When compiling XULRunner yourself: create a file module.ver in the directory mozilla/xulrunner/app with the contents:
    WIN32_MODULE_DESCRIPTION=MyApplication

    MyApplication はボタンのタイトルとして見せたいものに置き換えてください。また、同じディレクトリにある xulrunner.ico アイコンをあなたのアプリケーションのアイコンに置き換える事もできます。

  • すでにコンパイルされているXULRunnerの場合: xulrunner-stub.exe をアプリケーションの起動に使い、それを MyApplication.exe とリネームします。XULRunner 1.9 であればタスクバー内で望んだ名前になるでしょう(しかしながら、XULRunner 1.8 ではなりません)。アプリケーションのアイコンもこの実行ファイルを Resource Hacker のようなツールを用いて追加することができます。注意: trunk ビルドの xulrunner-stub は現在のところ bug 386152 が原因で落ちてしまいます。

Reading command line arguments

Chrome: Command Line を見てください。コマンドライン引数は nsICommandLineHandler でハンドルするのが普通です。

= Can i have JavaScript errors / warnings directed to stdout instead of the jsconsole? = See #306263 This doesn't do anything (1.8.0.1): xulrunner -app application.ini -console This neither (1.8.0.1) in ''defaults/preferences/?application name?.js'': pref("javascript.options.strict", true); pref("javascript.options.showInConsole", true); pref("browser.dom.window.dump.enabled", true);


Preferences needed for file download dialogs

unknown-content-type と file-downloads ダイアログを <browser> 要素から使うには、次の prefs を追加する必要があります:

pref("browser.download.useDownloadDir", true);
pref("browser.download.folderList", 0);
pref("browser.download.manager.showAlertOnComplete", true);
pref("browser.download.manager.showAlertInterval", 2000);
pref("browser.download.manager.retention", 2);
pref("browser.download.manager.showWhenStarting", true);
pref("browser.download.manager.useWindow", true);
pref("browser.download.manager.closeWhenDone", true);
pref("browser.download.manager.openDelay", 0);
pref("browser.download.manager.focusWhenStarting", false);
pref("browser.download.manager.flashCount", 2);
//
pref("alerts.slideIncrement", 1);
pref("alerts.slideIncrementTime", 10);
pref("alerts.totalOpenTime", 4000);
pref("alerts.height", 50);

ダイアログを要求する設定を失敗してしまうと、次のようなエラーを受け取るでしょう:

Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getBoolPref]

Error: dialog has no properties
Source File: chrome://mozapps/content/downloads/u...ontentType.xul
Line: 1


Enabling Password Manager

これらの設定は Firefox では標準になっていますが、しかしながら、XULRunner では設定されていません。これらの設定なしでは Password Manager はログインの詳細を保存しないでしょう。

pref("signon.rememberSignons", true);
pref("signon.expireMasterPassword", false);
pref("signon.SignonFileName", "signons.txt");

Troubleshooting

Window title missing

もし、XUL <window> のタイトルが空っぽで、 title 要素に設定しているのであれば、XULファイルの拡張子が <tt>.xml</tt> でなくて <tt>.xul</tt> であるかを確認してください。

ドキュメントのタグと貢献者

タグ: 
Contributors to this page: Mgjbot, Btm
最終更新者: Mgjbot,