<< Miro : main : python threading with XUL >>

Mozilla meets Python without rebulding

Miroを見ながら考えた.「ひょっとして,Xul + Pythonも結構いけるんじゃないか」.メモリ使用量で見るとXulRunner(Mozilla Runtime)が15MBに対して,wxPythonが18MB.素のPythonは4MBなのでそれを加えて19MB.Mozillaの表現力を持ってこのサイズならそんなに悪くない.XulRunnerがMozillaのレンダリングエンジンとXulによる拡張性を備えていて,Mozillaと同様の技術で開発できる点も魅力だ.

MozillaとPythonをつなぐPyXPCOMが標準では含まれておらずリビルドが必要で,しかもコンパイラが限定されているというので一旦はあきらめたが,Miroからバイナリファイルをもらってリビルド無しで何とか環境ができたという話.

昨日


PyXPCOMは最新のMozillaソースコードには含まれているがXulRunner配布パッケージには含まれていない.普通ならコンパイルが必要になるのだが,PyXPCOMはMozillaだけでなくPythonにも依存している.python.orgで配布されている2.5.1がmsvcrt71.dllに依存しているので,公式のPythonを使うためにはMozillaもmsvcrt71.dllでコンパイルする必要がある.つまりVisual Studio .NET 2003が必要.
VC2005ではmsvcrt80.dllを使うからだめなのだ.嗚呼,DLL Hell...

本日


ふと思い立って,Miroのパッケージをのぞくとxulrunnerが含まれており,都合の良いことにmsvcrt71.dllを使っている.ということは(たぶん丸ごとそのまま使っても良いかもしれないけど一応)必要なファイルをピックアップして公式に配布されている1.8.0.4のパッケージに追加すればPyXPCOMが動くのではないか?というのが出発点.

Miroから取り出したファイル


Pythonは公式2.5.1を別途インストール済みであることを前提とする.(python25.dllがパスに含まれていること)

XulRunnerは1.8.0.4を前提とする.1.9系列はVC 2005でコンパイルされているので不可.
ftp://ftp.mozilla.org/pub/mozilla.org/xulrunner/releases/

コンポーネントを自作するためにはidlファイルを含むGecko SDKも必要となる.
http://developer.mozilla.org/en/docs/Gecko_SDK

Participatory Culture Foundation/Miro/xulrunner 配下の以下のファイルを使う.
* python/xpcom/*
→ Pythonのライブラリパス(site-lib等)へそのままコピーする
* components/pyloader.dll
→ Pythonで書かれたコンポーネントを実行するために必要.
* regxpcom.exe, xidl.exe, xpcshell.exe
→ コンポーネント作成で使う

これらのファイルはMiroをインストールしなくても,以下の場所から入手可能
https://svn.participatoryculture.org/svn/dtv/trunk/dtv-binary-kit

使ってみる


基本的なstep by stepの説明はMozilla Development Centerに例があるので,ここには概略のみ記す.

[Step1] ファイルの配置 (ディレクトリ構成)
/program
 xul-stub.exe
 /xulrunner (そのまんま+追加ファイルを入れる)
 application.ini
 /chrome (プログラム本体)
 /defaults (Preference本体)
 /skin (css等)

起動時に
xulrunner/xulrunner.exe {application.iniのパス}
の代わりにxul-stub.exeを{好きな名前}.exeに変更して利用可能.このスタブは同一ディレクトリのapplication.iniとxulrunner/xulrunner.exeを自動で見つけてくれるようだ.

application.ini の中に Vendor, Nameを設定するが,この名前は個人用ディレクトリのディレクトリ名として使われる.

xulrunner --register-global
を実行すると,xulrunnerがこの場所になくてもスタブがxulrunnerを呼び出せるようになるが,予期しないxulrunnerが使われる可能性があるのでこれは非推奨.

[Step2] idlインターフェース
IDLインターフェースを定義する.その際nsISupports.idlをインクルードするためにGecko SDKが必要となる.

xpidl.exeにかけるとidlと同じディレクトリに拡張子が".xpt"のファイルが生成されるので,それはxulrunner/componentへ入れる.(本当はxulrunnerとは別のcomponentディレクトリへ入れて分離したいが,そこまでできていない)

idlに記述するGUIDはmicrosoft SDKに含まれるGUIDGEN.exeを使うか,またはGUID Generatorサービスを使ってファイルごとに生成する.

Gecko SDKに含まれるxpidl.dllは未解決の外部依存があって使用できないので,Miroに含まれる物を使う.

[Step3] コンポーネント本体
これもxulrunner/components/{好きな名前}.py として作成する.名前は何でも良いようだ.Step2で作ったインターフェースの名前が,Pythonのクラスの中で
_com_interfaces_ = components.interfaces.{インターフェース}
として利用される.また,_reg_clsid にはGUIDを生成して設定する.

[Step4] 使えるようにする
xulrunner/componentsディレクトリでregxpcom.exeを実行するとcompreg.dat, xpti.datの2つが作られる.いずれもテキストファイル.xpti.datにidlのインターフェース名が含まれ,compreg.datに生成したpythonコンポーネントが含まれていれば成功.

pythonスクリプトに文法エラーがある場合は,この段階で検出される.エラーになったらスクリプトを修正し,2つのdatファイルを削除して再チャレンジする.

[Step5] ちょっと試す
XULの実行中にJavaScriptエラーになった場合,そこで処理が打ち切られるだけなので,原因がつかめない.xpcshell.exeでインタラクティブにJavaScriptを実行できるので,コンポーネントのロードとインターフェースの呼び出しがうまくできるかをコマンドラインで試してみるとよい.ここでエラーが発生した場合はエラーメッセージが見える.

[Step6] いざ,XULアプリ
コマンドラインで動くのにXULアプリではコンポーネントが認識されていない場合,compreg.dat, xpti.datが古い可能性がある.XULアプリを実行すると,
Document and setteing/
{user}/Application Data/
{Vendor}/{Name}/Profiles/{random}/
(application.iniで指定されたVendor/Name, randomはランダムな文字列)という個人ディレクトリにもこれら2つのファイルが自動で作られる.コンポーネントを追加した場合はこれらを一旦削除する必要がある.

うまく動かない場合は,コマンドラインから -console オプションを付けて実行するとコンソールが現れる.JavaScriptでdump("message")と記述することでコンソールに文字列を出力できるので,実行経路や値の確認に使える.

おまけ


古いcompreg.dat, xpti.datを参照していることはすぐには気づかなかったが,sysinternalsのfilemonを使ってアクセスしたファイルを調べたら,プロファイルディレクトリにも情報が残っているのが見つかった.このツールは行き詰まったときには本当に役に立つ.
コンピュータ > ソフトウェア : comments (288) : trackbacks (0)

Comments

fake gucci hats sale にょろぷにらん | Mozilla meets Python without rebulding
replicas gucci 2012...2013/11/25 07:03 PM
louis vuitton backpack replica for men にょろぷにらん | Mozilla meets Python without rebulding
replica louis vuitton...2013/11/25 06:28 PM
louis vuitton replica best にょろぷにらん | Mozilla meets Python without rebulding
replica louis vuitton...2013/11/25 06:20 PM
にょろぷにらん | Mozilla meets Python without rebulding
ヴィトン...2013/11/25 04:04 PM
hermes iphone replica にょろぷにらん | Mozilla meets Python without rebulding
hermes birkin bag most expensive...2013/11/25 10:56 AM
where to get fake gucci bags にょろぷにらん | Mozilla meets Python without rebulding
fake gucci guilty perfume...2013/11/25 06:47 AM
best hermes lindy replica にょろぷにらん | Mozilla meets Python without rebulding
tui xach hermes birkin fake...2013/11/22 09:41 AM
cheap gucci replica uk にょろぷにらん | Mozilla meets Python without rebulding
replica gucci t shirt...2013/11/20 10:49 PM
replica gucci 101 g-round にょろぷにらん | Mozilla meets Python without rebulding
fake gucci sukey large tote...2013/11/20 03:06 PM
toms shoes 30dollars にょろぷにらん | Mozilla meets Python without rebulding
toms shoes outlet...2013/11/19 10:43 PM
鈥滄槸涓€涓湪鍖婚櫌鍖栭獙瀹ゅ伐浣滅殑銆備粖澶╂棭鏅ㄤ粬杩樺湪鍞夊0鍙规皵锛屽洜涓轰粬鎵惧埌浜嗗嚑闂村ソ鎴垮瓙锛屼絾鏄紝绉熼噾寰堣吹锛屼粬涓€涓汉浣忎笉璧凤紝鍙堟壘涓嶅埌浜鸿窡浠栧悎绉熴€傗€?
chanel 新作...2013/11/19 10:58 AM
knock off gucci boots にょろぷにらん | Mozilla meets Python without rebulding
fake gucci loafers...2013/11/18 04:06 PM
replica gucci aviators にょろぷにらん | Mozilla meets Python without rebulding
replica gucci purses...2013/11/16 02:16 AM
hermes fake hardware にょろぷにらん | Mozilla meets Python without rebulding
replica hermes bags china...2013/11/15 01:17 PM
cheap fake hermes handbags にょろぷにらん | Mozilla meets Python without rebulding
hermes enamel bracelet replica...2013/11/15 07:05 AM
fake hermes hong kong にょろぷにらん | Mozilla meets Python without rebulding
hermes birkin hac replica...2013/11/15 04:49 AM
hermes replica zoll にょろぷにらん | Mozilla meets Python without rebulding
best replica hermes birkin bags...2013/11/15 03:28 AM
gucci men's belt replica にょろぷにらん | Mozilla meets Python without rebulding
fake designer laptop bags...2013/11/14 02:32 AM
knock off gucci bags cheap にょろぷにらん | Mozilla meets Python without rebulding
fake gucci belts online...2013/11/13 06:20 PM
fake gucci bags uk にょろぷにらん | Mozilla meets Python without rebulding
replica gucci underwear...2013/11/13 09:20 AM
hermes mens bag replica にょろぷにらん | Mozilla meets Python without rebulding
cheap replica hermes birkin bag...2013/11/13 02:08 AM
hermes birkin 30 replica にょろぷにらん | Mozilla meets Python without rebulding
fake hermes picotin bag...2013/11/12 10:32 AM
buy gucci wallet online singapore にょろぷにらん | Mozilla meets Python without rebulding
pictures fake gucci purses...2013/11/10 04:55 PM
cheap hermes birkin replicas にょろぷにらん | Mozilla meets Python without rebulding
hermes birkin bag mieten...2013/11/10 05:32 AM
replica gucci joy boston bag にょろぷにらん | Mozilla meets Python without rebulding
authentic fake gucci bag...2013/11/09 11:28 AM
hermes birkin original fake にょろぷにらん | Mozilla meets Python without rebulding
replica hermes birkin bags china...2013/11/09 10:58 AM
hermes mini birkin replica にょろぷにらん | Mozilla meets Python without rebulding
tui hermes fake 2 o ha noi...2013/11/08 03:40 PM
gucci aaa replica malaysia にょろぷにらん | Mozilla meets Python without rebulding
knock off gucci tote bags...2013/11/08 02:21 AM
hermes replica evelyne にょろぷにらん | Mozilla meets Python without rebulding
top quality replica hermes birkin...2013/11/07 09:18 PM
hermes replica philippines にょろぷにらん | Mozilla meets Python without rebulding
fake hermes birkin bag...2013/11/07 12:53 PM
replica gucci にょろぷにらん | Mozilla meets Python without rebulding
knock off gucci crossbody bag...2013/11/06 09:19 PM
replica gucci coda にょろぷにらん | Mozilla meets Python without rebulding
fake gucci backpacks for men...2013/11/06 07:44 AM
hello there and thank you for your information – I have definitely picked up anything new from right here. I did however expertise some technical points using this site, as I experienced to reload the web site a lot of times previous to I could get it to load correctly. I had been wondering if your hosting is OK? Not that I'm complaining, but slow loading instances times will sometimes affect your placement in google and could damage your high-quality score if ads and marketing with Adwords. Anyway I’m adding this RSS to my email and could look out for a lot more of your respective fascinating content. Ensure that you update this again very soon..
download hd desktop wallpapers...2013/11/05 08:19 PM
quality replica hermes birkin にょろぷにらん | Mozilla meets Python without rebulding
hermes bags replicas for cheap...2013/11/05 04:11 PM
fake gucci ipad 2 case にょろぷにらん | Mozilla meets Python without rebulding
replica gucci jacket...2013/11/04 08:20 PM
wholesale gucci purses にょろぷにらん | Mozilla meets Python without rebulding
replica gucci ties...2013/11/04 01:39 PM
fake gucci bookbags にょろぷにらん | Mozilla meets Python without rebulding
gucci sale outlet fake...2013/11/03 09:48 AM
hermes replica t shirts にょろぷにらん | Mozilla meets Python without rebulding
highest quality hermes birkin replicas...2013/11/03 09:16 AM
replica gucci laptop bag にょろぷにらん | Mozilla meets Python without rebulding
replica large gucci bags...2013/11/03 07:29 AM
gucci horsebit hobos gucci handbags にょろぷにらん | Mozilla meets Python without rebulding
fake designer gucci handbags...2013/11/02 06:49 PM
fake gucci men belts にょろぷにらん | Mozilla meets Python without rebulding
replica gucci briefcase men...2013/11/02 04:05 PM
replica gucci book bags にょろぷにらん | Mozilla meets Python without rebulding
gucci replica handbags reviews...2013/11/02 10:13 AM
hermes kelly double tour bracelet replica にょろぷにらん | Mozilla meets Python without rebulding
fake hermes bags hong kong...2013/11/01 07:22 PM
replica gucci belts in china にょろぷにらん | Mozilla meets Python without rebulding
replica gucci dog carrier...2013/11/01 10:43 AM
replica hermes scarves uk にょろぷにらん | Mozilla meets Python without rebulding
hermes replica necklace...2013/10/31 03:27 PM
louis vuitton damier speedy replica にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton replica...2013/10/31 06:16 AM
fake gucci clutch にょろぷにらん | Mozilla meets Python without rebulding
replica gucci 101 g-round...2013/10/26 09:44 AM
replica gucci digital にょろぷにらん | Mozilla meets Python without rebulding
fake gucci mens bag...2013/10/25 12:17 PM
fake gucci wallets women にょろぷにらん | Mozilla meets Python without rebulding
fake gucci keychain...2013/10/25 11:15 AM
women's heels cheap にょろぷにらん | Mozilla meets Python without rebulding
mbt shoes...2013/10/24 10:15 AM
louis vuitton damier backpack replica にょろぷにらん | Mozilla meets Python without rebulding
where to buy replica louis vuitton luggage...2013/10/24 07:32 AM
best website for replica louis vuitton にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton replica...2013/10/24 05:49 AM
tips to distinguish authentic gucci handbag にょろぷにらん | Mozilla meets Python without rebulding
replica gucci digital...2013/10/23 09:53 PM
replica gucci dog tags にょろぷにらん | Mozilla meets Python without rebulding
fake kids gucci belts...2013/10/23 06:53 PM
fake gucci hi tops にょろぷにらん | Mozilla meets Python without rebulding
replica gucci designer handbags...2013/10/23 04:40 PM
louis vuitton replica handbags china wholesale にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton replica...2013/10/23 06:27 AM
replica louis vuitton zonnebril にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton replica...2013/10/22 06:55 PM
replica gucci bags wholesale にょろぷにらん | Mozilla meets Python without rebulding
buy fake gucci diaper bag...2013/10/22 04:10 PM
best louis vuitton replica ioffer にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton replica...2013/10/22 08:52 AM
heels for cheap にょろぷにらん | Mozilla meets Python without rebulding
mbt shoes...2013/10/21 01:27 PM
best replica hermes bracelet にょろぷにらん | Mozilla meets Python without rebulding
hermes birkin mirror replica...2013/10/21 06:33 AM
louis vuitton replica hardside luggage にょろぷにらん | Mozilla meets Python without rebulding
buy replica louis vuitton bags cheap...2013/10/21 05:09 AM
lil wayne and gucci mane lyrics にょろぷにらん | Mozilla meets Python without rebulding
gucci handbags outlet...2013/10/21 03:41 AM
louis vuitton replica bags reviews にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton replica...2013/10/20 11:12 AM
louis vuitton altair clutch replica にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton damier graphite belt replica...2013/10/20 10:36 AM
tui hermes fake loai 1 にょろぷにらん | Mozilla meets Python without rebulding
hermes outlet birkin...2013/10/20 06:04 AM
louis vuitton damier speedy replica にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton replica net...2013/10/20 12:24 AM
louis vuitton keepall 60 replica にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton replica...2013/10/19 07:33 AM
hermes replica 2012 にょろぷにらん | Mozilla meets Python without rebulding
replica hermes men...2013/10/19 03:01 AM
best replica hermes jewelry にょろぷにらん | Mozilla meets Python without rebulding
cheap fake designer handbags online...2013/10/18 10:41 PM
hermes kelly bag replica にょろぷにらん | Mozilla meets Python without rebulding
hermes fake handbags...2013/10/18 06:05 PM
replica hermes bracelet ebay にょろぷにらん | Mozilla meets Python without rebulding
hermes replica high quality...2013/10/18 11:18 AM
louis vuitton replica car accessories にょろぷにらん | Mozilla meets Python without rebulding
louis vuitton replica...2013/10/18 06:56 AM

Comment Form

  

Trackbacks

Trackback url
Latest Entries
Categories
Recent Comments
Recent Trackback
Archives
Profile
Other
RECOMMEND