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.
Window | URL | Window 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> であるかを確認してください。