GoFcshDaemon
flex4+air2.0 用の fcsh.exe ラッパー(パイプ、ブリッジ)のAIR2.0版を作成。環境は、
- flex4sdk_b2_100509
- air2_b1_sdk_win_111709
- jdk1.6.0_16
- PHP 5.3.0(xampp)
- WindowsXP professional SP3
- apache-ant-1.7.1
などです。ビルド一式にソースやビルド済みのairパッケージ(dist/GoFcshDaemon.exe)を圧縮しました。
ビルド一式をダウンロードして展開し、展開されたフォルダ内の dist/GoFcshDaemon.exe を起動してインストールします。
キーワード的にまとめれば、
-
- Air2+Flex4 で NativeProcess が使えるようになったので、外部プログラムを ActionScript から直接起動しました。
- また、ServerSocket 、システムトレイ を利用しました。
- プロセス起動時の不要な DOS 窓を開かせないために javaw.exe を使いました(JAVA、複数スレッド、日本語入出力)。
これまでの、関連記事は、PHP版fcshデーモン、PHP版fcshデーモンの日本語対応、meadow上でantを使ったビルド(-find引数)について、meadowからのデーモン起動についてなどです。以下、関連した部分と共にざっとまとめます。
- PipedFcsh.lzh内のfcshPipe.php、my.php.iniを使用します。
$ php -c (パス)/my.php.ini (パス)/fcshPipe.php mxmlc +configname=air Sample.mxml
などと、起動することでデーモンと通信を行い、fcsh.exe を利用します。
- その際のアドレス:ポート番号は、「127.0.0.1:10000」です。ビルド一式は、GoFcshDaemonのソースでもあり、ビルドサンプルにもなっています。アーカイブ内の build.xml を参照してください。
- さて、GoFcshDaemon は Good Offices of Fcsh Daemon のことです。Good Offices は仲介者という意味です。パイプ、ラッパー、ブリッジ などと同じような意味ですが混乱してきたので Good Offices などという馴染みの無い用語を使いました。
- ServerSocket において、bind が成功してしまうとそのアドレス:ポート番号は有効なままになり、開放する方法がないようです。プログラム中では何度でも 設定=>bind が出来るようになっていますが、ポート番号を変更したならばプログラムを再起動したほうが安全だと思います。
- GoFcshDaemon を meadow から ant ビルドするには、 -find オプションを使うようようにします。
Compile command: ant -find build.xml
などとします。
- fcsh コマンドの、mxmlc、compc、clear、info、quit をGoFcshDaemon は受け付けます。コンパイルコマンドは、既出の場合、再コンパイルコマンド(compile id)に置き換えて、fcsh.exe を呼び出します。
- GoFcshDaemon では、javaw.exe を介在させるかどうかを選択できます。介在させない場合には、DOS窓が開きます。
- 日本語のメッセージを解釈出来るので、(flex_sdk)/bin/jvm.config のオプションで英語モードにする必要はありません。恐らく問題なく動くとは思いますが、自身の環境では、fcsh.exe のメッセージは shift-JIS、GoFcshDaemon は UTF-8 で内部的には動いています。もし、ローケールやコードページを変更してる場合は、英語モードが必要になるかも知れません。次はjvm.configの該当部分です。
# Arguments to VM #java.args=-Xmx384m -Dsun.io.useCanonCaches=false -Duser.language=en -Duser.region=US #java.args=-Xmx384m -Dsun.io.useCanonCaches=false -Duser.language=ja -Duser.region=JP java.args=-Xmx384m -Dsun.io.useCanonCaches=false
...もう少し丁寧に書くべきですが、ちょっと時間が掛かりすぎて時間切れの感があり、今後、修正しながらということにします。