hakeの日記

Windows環境でプログラミングの勉強をしています。

Ruby 1.9で書いたスクリプトのexe化

ruby 1.9スクリプトをexe化するためのメモ

現在使用中のruby入手先

Ruby MSI Packagesで公開されている、Ruby-1.9.1-p429 (RI抜き) Microsoft Installter Package(2010/07/021 version 28523)
同じ場所にあるASR191(Ruby- 1.9.1用AddOn)も一緒にインストール

ocraの入手

exe化のツールとしてocraを使用(現時点のバージョンは1.1.3)

gem install ocra

exe化の方法

ocra --windows hello.rb

オプションの--windowsは、実行時にコマンドプロンプトを開かなくする。その他のオプションは、--helpにて確認のこと。

サンプルスクリプト

以前書いたVisualu Rubyスクリプトです。ボタンを押すと数字が増減します。


最初ボタンが1個のスクリプトをexe化したら、ボタン押下時に強制終了する現象が発生しました。これのときはocraコマンド実行時に起動するスクリプトで何もせずに終了させるのではなく、一回ボタンを押すと正常な動作をするようになりました。
もしかしたら部品を全て動作させないとまともなexeにならない?とボタンを二つにした以下のスクリプトではこの現象は発生しませんでした。原因は不明です。

    • 後ほど再度確認したら再現しませんでした。
# coding: Windows-31J

require 'vr/vruby'
require 'vr/vrcontrol'

class MyForm < VRForm

  def construct
    @i = 0
    self.caption = 'form1'
    self.move(140,124,500,400)
    addControl(VRButton,'button1',"button1",176,200,136,32)
    addControl(VRButton,'button2',"button2",176,250,136,32)
    addControl(VRText,'text1',"",56,32,360,136,WStyle::WS_VSCROLL|WStyle::WS_HSCROLL)
  end 

  def button1_clicked
      @text1.text += "#{@i.to_s}\n"
      @text1.scrollTo(@text1.countLines,0)
      @i += 1
   end

  def button2_clicked
      @text1.text += "#{@i.to_s}\n"
      @text1.scrollTo(@text1.countLines,0)
      @i -= 1
   end

end 

VRLocalScreen.start(MyForm)