GRE ではコンポーネントフォルダをスキャンして XPCOM コンポーネントを登録していくのだが、このときスキャンするフォルダは一つではなく、次のような複数の場所をスキャンする。
NS_GRE_COMPONENT_DIR
(GRE 直下の components フォルダ)NS_XPCOM_COMPONENT_DIR
(実行ファイルのある場所の components フォルダ)NS_XPCOM_COMPONENT_DIR_LIST
このことから、 GRE を使ったアプリケーションを配布する際には、 GRE で不足しているコンポーネントのみを一緒に配布すればいいことになる。 そこで、実際に最小限のコンポーネントを構成する実験を行った。
まず、 nsIXMLRpcClient
を利用した XML-RPC の簡易クライアントを作成した。
次に、 Mozilla 1.8β1 の components 以下から持ってきた3つのファイルの有無により、クライアントが実行できるかどうかを確かめた。
- nsXmlRpcClient.js
- nsDictionary.js
- xml-rpc.xpt
まず、最低限起動時エラーを出さないためには、 nsXmlRpcClient.js と xml-rpc.xpt は必須である。
nsXmlRpcClient.js は nsIXMLRpcClient
の実装を記述しているため、必要不可欠である。
また、 xml-rpc.xpt は nsIXMLRpcClient その他の UUID 情報を持っているため、これがないと nsXmlRpcClient.js の初期化処理が正常に行われない。
最後に、 nsDictionary.js だが、これがない場合、ほとんどの XML-RPC の結果を処理することができない。
nsDictionary.js は XML-RPC の結果で構造体を扱うためのものだが、単一の値を返す XML-RPC はほとんどないため、事実上必須といえる。
以上のことから、アプリケーションの components フォルダに必要なファイルは次のものだとわかる。
- アプリケーションから利用されるコンポーネントを実装した DLL または JavaScript
- JavaScript から利用されるコンポーネントを含む xpt
今回は DLL については特に検証しなかったがおそらく条件は JavaScript のものと変わらないだろう。 xpt ファイルに関しては JavaScript で使用さえしなければ必要ないはずだ。 逆に、 JavaScript であれば components フォルダの外、たとえばユーザースクリプトなどで使う場合であっても必要だろう。
Hi,
Wich Delphi Version the Gecko SDK was designed for ?
Regards,
Vitor
I designed this SDK for Delphi 6 Pro(J), and it can be compiled in Delphi 2005(J).
Thank you.