2010/08/15

コマンドラインでのスクリプト指定が不要なEXEを作成

NILScriptでは通常、コマンドライン引数で実行させたいスクリプトファイル名を指定しなければならないため、Mozilla Firefoxの設定の「プログラム」の項での「他のプログラムを選択」のように、EXEファイルパスしか指定できない外部プログラム呼び出し機能からは、スクリプトを実行させられません。
この問題を解決するために、コマンドラインでスクリプトファイル名を渡さずに一定のスクリプトを実行するというEXEファイルを作成する機能が用意されています。

この機能を利用するには、NILScriptに同梱の「mkexe_c.bat」か「mkexe_w.bat」を実行し、表示されるプロンプトで生成したい実行ファイルの名前を指定してください。「_c」の方はコンソール版、「_w」は非コンソール版の実行ファイルが作成されます。

すると、NILScriptのディレクトリ内に、入力した名前で拡張子「.exe」のファイルと「.js」のファイルが作成され、拡張子「.js」のスクリプトファイルがメモ帳で開かれます。(使用するエディタはmkexe.ngを編集すれば変更できます。)

スクリプトファイルの内容は以下のようになっており、「/* script body */」と書かれている箇所に実行させたいスクリプトを記述します。
__NG__EvalFile(__NG__HostPath().replace(/([^\\]+)$/,"lib\\Base.ng"));
Main.main=function(){
 /* script body */
 
}
Main.execute();
後は、EXEファイルの方を実行すれば、記述したスクリプトが実行されます。
なお、実行ファイルに渡されたコマンドライン引数は、スクリプト中で「Main.params」というプロパティで配列として参照できます。

実は実行ファイルの部分はng.exe/ngw.exeと全く同じなのですが、コマンドラインの第1引数のスクリプトを読み込んで実行するという処理が定義されている「Main.main()」を上書きすることで、コマンドライン引数を使用せずに任意の処理を実行させられるのです。

0 件のコメント:

コメントを投稿