From: ShingoKintaka Date: 2010-01-14T12:24:41+09:00 Subject: [ruby-list:46769] WindowsでGUIなRuby実行ファイルの作り方について Windows上(XP/Windows7)で開発したWideStudioアプリケーション(Ruby)につ いて、みなさんどのように実行ファイルを作成されているのか、アイデアを頂き たく投稿します。 長文です。 私はWideStudioをRubyで利用しています。 利用しているRubyはActiveScriptRubyです。 <環境> OS   : Windows7/XP WideStudio: v398-3a Ruby : ActiveScriptRubyの最新版 コンパイラ : ActiveScriptRubyに付属しているexerb 私はWideStudioとRubyの組み合わせで自分用のツールを作っており、たまにそれ を同僚や知人に配布することがあります。 この時、当然ながら同僚や知人のパソコンにWideStudioがインストールされてお りません。 exerbを利用してWideStudioプロジェクトをコンパイルする事を試行錯誤してた どり着いた方法が下記になります。 □コンパイル 1・WideStudioでRubyによるアプリケーションを開発する 2・「プロジェクト名.rb」を編集して、loadの部分をrequireに変更 3・「プロジェクト名.rb」を引数にしてmkexyコマンドを実行  ※コマンド実行結果、「プロジェクト名.exy」が作成される 4・「プロジェクト名.exy」を引数にしてexerbコマンドを実行 □配布用インストーラ作成 ・WindowsフォルダにあるWideStudioのDLLファイルを全てコピー ・作成したRubyが利用するであろうDLLファイルを実行ファイルと同じパスに全 てコピー ※インストーラーはフリーの物を利用して作っています。 作り方の情報源は下記のサイトです。 http://d.hatena.ne.jp/kamuycikap/20090814/1250210906 <問題1> 情報源により行った実行ファイル作成には問題があります。 それは、「プロジェクト名.rb」のload部分をrequireに書き換えないと、実行 ファイルを動かしたときにエラーになることです。 loadのままでも手順を踏めば実行ファイルは出来上がります。 しかしながら実行するとエラーを吐いてプログラムが止まってしまうのです。 <問題2> requireに書き換えると動作する実行ファイルが作成出来るのですが、ここでも 問題が発生します。 mkexyコマンドはコンパイルするのに必要な情報を収集(ライブラリ等)しレシピ ファイルとして保存するプログラムだと思っています。 mkexyをを実行するとレシピファイルを作成する為にアプリケーションが起動す るのですが、作成アプリケーションの全ての動作を実行してから終了しないと、 正しく動作するプログラムの実行ファイルにならないのです。 つまり、全ての動作を実行しないと、正しくライブラリ情報を取得することが出 来ていない模様です。 ※この問題に関しては、WideStudioが問題なのではなく、mkexyコマンドの仕様で ある可能性もあるのですが、この現象についてメンバーの中に解決作を知ってい る人がいるかもしれないと思い記述しました。 ※実行ファイルを作成する度に、全てのアプリ操作を行うのは効率が悪いです。 以上が私がWindows上でRubyを利用したWideStudioプロジェクトをコンパイルす る手順と感じている問題になります。 Windows上でWideStudioをRubyで利用しているメンバーの方々は、どのようにし て実行ファイルにしているのでしょうか? また、そのアプリケーションを配布する時、どのようにして配布しているので しょうか? 同じような事を行っている方がいらっしゃいましたら、アイデアを頂きたいと思 います。