Exerb このエントリーをはてなブックマークに追加

提供:Asterisk Works Wiki
移動: 案内, 検索

このページはRubyスクリプトをWindowsのexe化するExerbに関する雑多なメモです。

目次

Exerb(イグザーブ)とは

Exerb Projectで開発されているRubyスクリプトをWindowsで動作するexeファイルに変換するツール。

Rubyの実行環境ごとexe化されるのでRubyの実行環境がないマシンでも実行できるファイル作成される。

exerbはActiveScriptRubyに同梱されるので単体でインストールせず Ruby環境ごとインストールするのがおすすめ。

使い方

たとえばhello.rbというスクリプトをexe化するには次をコマンドプロンプトで実行する。

exerbの実行時オプションに-c guiをつけないと生成したexeファイル実行時にコマンドプロンプトが出てきてしまうのでGUIを持つプログラムの場合はつける。

>ruby -r exerb/mkexy hello.rb
>exerb -c gui hello.exy

すると、helle.exeができている。 これだけ。ちょー簡単。

もう少し詳しく知りたければ次のURLに非常にわかりやすいチュートリアルがある。

exe化したスクリプト内で実行ファイルのパスを取得する

普通のRubyスクリプトでは$0に実行中のスクリプトファイル名がフルパスで格納されるが、 exe化したあとだとexeファイルのある場所ではなく作業ディレクトリが取得してしまう。

exeファイルと同じディレクトリにある設定ファイルを読み込みたいときなどそれでは困ってしまう。

exerbではExerbRuntimeというモジュールが用意されている。それを使えば実行しているexeファイルの場所などを取得できる。

たとえば実行ファイルのパスを表示するには次の様に書く。

printf("ExerbRuntime.filepath = %s\n", ExerbRuntime.filepath) if $Exerb

if修飾子がついているのは、通常のRubyスクリプトとして実行するときにはExerbRuntimeがつかめず、エラーとなるため。 exe化して実行したときにしかExerbRuntimeモジュールは操作できない。

Opensslを使っているプログラムのexe化

暗号化を行うような処理を実装した場合、自動的に作ったexyファイルでは組み込まれるファイルが足りない。

具体的に足りないファイルは次の2つ

  • libeay32.dll
  • ssleay32.dll

これらはexyファイルに追記すればexeファイルに含まれる。

ActiveScriptRubyでインストールした際には次の場所にある。

\bin

次の記述をexyファイルのfileセクションに追加すればよい。

 ssleay32.dll:
   file: <Rubyのインストールディレクトリ>\bin\ssleay32.dll
 libeay32.dll:
   file: <Rubyのインストールディレクトリ>\bin\libeay32.dll



個人用ツール
名前空間
変種
操作
案内
主なカテゴリ
ツールボックス