`
jimmykuu
  • 浏览: 36967 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ruby转Exe -- Exerb研究

    博客分类:
  • Ruby
阅读更多

1. Exerb简介

Exerb是一个将ruby脚本程序(.rb)转换成Windows应用程序(.exe)的软件。目前最新版本4.1.0,下载地址:http://downloads.sourceforge.jp/exerb/23470/exerb-4.1.0.zip


2.安装

把下载的zip文件解压,进入exerb目录,运行ruby setup.rb。这时exerb和mkexy命令将会加入ruby/bin目录中。

3.ruby -> exe

先来个最简单的

hello.rb

  1. puts 'Exerb'

运行exerb hello.rb,生成一个hello.exe文件,OK。

下面写个GUI程序,使用wxRuby类库。

hello_wx.rb

  1. require 'wxruby'
  2. include Wx
  3. class MyFrame < Frame
  4.    def initialize(title)
  5.      super(nil, -1, title)
  6.      Button.new(self, -1, "Hello, I'm a Button")
  7.    end
  8. end
  9. class MyApp < App
  10.    def on_init
  11.      frame = MyFrame.new('Simple wxRuby App')
  12.      frame.show
  13.    end
  14. end
  15. a = MyApp.new
  16. a.main_loop

exerb hello_wx.rb,生成hello_wx.exe,却不能运行。因为exe并没有把程序所需的类库打包进来,这时候就得执行mkexy命令。

mkexy hello_wx.rb,生成hello_wx.exy文件

hello_wx.exy

  1. # Generated by mkexy
  2. # on 2007-01-31 23:50
  3. general:
  4.   startup: hello_wx.rb
  5.    core: cui
  6.    kcode: none
  7. file:
  8.    hello_wx.rb:
  9.    rbconfig.rb:
  10.      file: c:/ruby/lib/ruby/1.8/i386-mswin32/rbconfig.rb
  11.    rubygems/rubygems_version.rb:
  12.      file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/rubygems_version.rb
  13.    rbconfig/datadir.rb:
  14.      file: c:/ruby/lib/ruby/site_ruby/1.8/rbconfig/datadir.rb
  15.    rubygems/user_interaction.rb:
  16.      file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/user_interaction.rb
  17.    forwardable.rb:
  18.      file: c:/ruby/lib/ruby/1.8/forwardable.rb
  19.    digest.so:
  20.      file: c:/ruby/lib/ruby/1.8/i386-mswin32/digest.so
  21.      type: extension-library
  22.    digest/sha2.so:
  23.      file: c:/ruby/lib/ruby/1.8/i386-mswin32/digest/sha2.so
  24.      type: extension-library
  25.    rational.rb:
  26.      file: c:/ruby/lib/ruby/1.8/rational.rb
  27.    date/format.rb:
  28.      file: c:/ruby/lib/ruby/1.8/date/format.rb
  29.    parsedate.rb:
  30.      file: c:/ruby/lib/ruby/1.8/parsedate.rb
  31.    time.rb:
  32.      file: c:/ruby/lib/ruby/1.8/time.rb
  33.    rubygems/source_index.rb:
  34.      file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/source_index.rb
  35.    rubygems/version.rb:
  36.      file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/version.rb
  37.    rubygems/specification.rb:
  38.      file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/specification.rb
  39.    openssl.so:
  40.      file: c:/ruby/lib/ruby/1.8/i386-mswin32/openssl.so
  41.      type: extension-library
  42.    openssl/bn.rb:
  43.      file: c:/ruby/lib/ruby/1.8/openssl/bn.rb
  44.    openssl/cipher.rb:
  45.      file: c:/ruby/lib/ruby/1.8/openssl/cipher.rb
  46.    openssl/digest.rb:
  47.      file: c:/ruby/lib/ruby/1.8/openssl/digest.rb
  48.    openssl/buffering.rb:
  49.      file: c:/ruby/lib/ruby/1.8/openssl/buffering.rb
  50.    fcntl.so:
  51.      file: c:/ruby/lib/ruby/1.8/i386-mswin32/fcntl.so
  52.      type: extension-library
  53.    openssl/ssl.rb:
  54.      file: c:/ruby/lib/ruby/1.8/openssl/ssl.rb
  55.    openssl/x509.rb:
  56.      file: c:/ruby/lib/ruby/1.8/openssl/x509.rb
  57.    openssl.rb:
  58.      file: c:/ruby/lib/ruby/1.8/openssl.rb
  59.    rubygems/gem_openssl.rb:
  60.      file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/gem_openssl.rb
  61.    rubygems/security.rb:
  62.      file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/security.rb
  63.    rubygems/custom_require.rb:
  64.      file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb
  65.    rubygems.rb:
  66.      file: c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb
  67.    ubygems.rb:
  68.      file: c:/ruby/lib/ruby/site_ruby/1.8/ubygems.rb
  69.    wxruby.so:
  70.      file: c:/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt/wxruby.so
  71.      type: extension-library

该文件把hello_wx.rb所需的类库文件都包含进来了。

运行exerb hello_wx.exy,这时候生成的hello_wx.exe是可以执行的,问题是打开文件的同时会打开一个控制台窗口,要解决这个问题,就得修改hello_wx.exy文件,把cui改成gui。

  1. general:
  2.   startup: hello_wx.rb
  3.   core: gui #cui
  4.   kcode: none

再次运行exerb hello_wx.exy,生成一个红宝石图标的exe文件,OK!

另外,exy文件中还可以设置图标和版本信息。不再赘述。配置属性如下:

  1. resource:
  2. icon:
  3. - width : 16
  4. height: 16
  5. color : 4
  6. file : your_ico.ico
  7. - width : 32
  8. height: 32
  9. color : 4
  10. file : your_ico.ico
  11. version:
  12. file_version_number : 1.2.3.4
  13. product_version_number: 5.6.7.8
  14. comments : Comments Field
  15. company_name : Company Name Field
  16. legal_copyright : Legal Copyright Field
  17. legal_trademarks : Legal Trademarks Field
  18. file_version : File Version Field
  19. product_version : Product Version Field
  20. product_name : Product Name Field
  21. file_description : File Description Field
  22. internal_name : Internal Name Field
  23. original_filename : Original Filename Field
  24. private_build : Private Build Field
  25. special_build : Special Build Field
分享到:
评论
6 楼 山雨欲来风满楼 2009-07-28  
用 4.2.0版本就可以解决这个问题
5 楼 zhbinx 2009-04-28  
请问,我遇到了orange0513一样的问题
当require 'win32ole'时,打成exe就会提示出现无法定位程序输入点
LZ方便解答一下吗
4 楼 jimmykuu 2008-12-22  
orange0513 写道

当使用了ruby线程时,生成的exe文件启动时出现无法定位程序输入点rb_thread_status于动态链接库XXX.exe上 怎么解决?

方便把你的代码贴出来看看么,我试了代码中放入线程没有出错,不知道你是如何写的
3 楼 orange0513 2008-12-16  
当使用了ruby线程时,生成的exe文件启动时出现无法定位程序输入点rb_thread_status于动态链接库XXX.exe上 怎么解决?
2 楼 agate 2008-06-17  
good~~~cool~~~
1 楼 cowoo 2007-05-30  
Good!

相关推荐

    ruby-debug-ide

    《深入理解Ruby调试工具:ruby-debug-ide》 在Ruby编程世界中,高效的问题排查与代码调试是开发者必备的技能之一。ruby-debug-ide正是这样一个强大的调试接口,它为Ruby开发环境提供了集成的调试支持,使得开发者...

    ruby-1.8.7-p302.tar.gz

    Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。...该版本为ruby-1.8.7-p302

    mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe

    mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe

    ruby-irb-1.8.7.352-13.el6.x86_64.rpm

    ruby-irb-1.8.7.352-13.el6.x86_64.rpm ruby-irb-1.8.7.352-13.el6.x86_64.rpm

    ruby-1.9.3-p547.tar.gz

    总的来说,"ruby-1.9.3-p547.tar.gz"是Ruby编程语言的一个历史版本,对于那些需要兼容旧项目或者研究历史版本特性的开发者来说,这是一个重要的资源。通过学习和使用这个版本,你可以深入了解Ruby的语法、特性以及...

    ruby-1.9.2-p290.tar.gz

    标题中的"ruby-1.9.2-p290.tar.gz"是一个开源编程语言Ruby的特定版本的归档文件,采用流行的tar和gzip格式进行压缩。这个版本是Ruby的1.9.2分支的一个更新点,标记为p290,意味着它是该分支的第290个补丁级别。在...

    src-oepkgs/ruby-ruby2ruby

    src-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2rubysrc-oepkgs/ruby-ruby2...

    ruby-debug-1.87.rar

    《Ruby调试工具:ruby-debug-1.87详解》 Ruby是一种动态、开源的编程语言,以其简洁的语法和强大的元编程能力深受开发者喜爱。在开发过程中,调试是必不可少的一环,而`ruby-debug-1.87`就是Ruby社区中广泛使用的...

    ruby-debug-base19-0.11.26.gem

    ruby-debug-base19-0.11.26.gem

    ruby-2.5.3-x64 下载

    标题中的"ruby-2.5.3-x64"指的是Ruby语言的特定版本,2.5.3,这是一个64位的构建。Ruby的版本迭代频繁,每个新版本通常会包含性能优化、新的特性和错误修复。2.5.3是2018年发布的一个稳定版本,它带来了诸如改进的...

    ruby186-25.part1

    ruby186-25 for windows

    ruby+selenium-webdriver测试--第一个例子源代码

    Ruby+Selenium-Webdriver是一个强大的自动化测试工具组合,用于模拟真实用户在浏览器中与网页进行交互。Ruby是一种动态、面向对象的编程语言,而Selenium WebDriver是一个开源的自动化测试框架,支持多种浏览器和...

    Ruby1.8.6 One-Click Installer.part2.rar

    Ruby1.8.6 One-Click Installer

    ruby-1.8.7-p358-i386.rar

    ruby-1.8.7-p358-doc-chm.7z 3.65 MB 1,399 Other Other ruby-1.8.7-p358-i386-mingw32.7z 5.12 MB 1,503 i386 Other rubyinstaller-1.8.7-p358.exe 11.69 MB 13,534 i386 .exe (Windows executable)

    ruby-couch-db-源码.rar

    《Ruby与CouchDB:深入理解ruby-couch-db源码》 Ruby是一种强大的动态编程语言,以其简洁的语法和灵活性深受开发者喜爱。在Web开发领域,Ruby常常与Rails框架一起被用于构建高效、可维护的应用程序。而CouchDB则是...

    RUBY 切换EXE

    总结一下,"RUBY 切换EXE"是使用Exerb工具将Ruby程序转换为Windows平台下的可执行文件,以便在没有Ruby环境的计算机上运行。这个过程涉及安装Exerb、编写Ruby代码、创建配置文件、打包和测试生成的EXE。虽然这种方式...

    ruby-1.9.1-p0-i386-mswin32.rar

    在本压缩包“ruby-1.9.1-p0-i386-mswin32.rar”中,包含的是针对i386架构的Windows 32位系统的Ruby安装程序。这个版本(p0)意味着它是1.9.1主版本下的一个特定补丁级别,通常包括了一些错误修复和优化。 Ruby的...

    ruby-doc-bundle.chm

    ruby-doc-bundle.chm ruby-doc-bundle.chm

    ruby-2.5.9-107.module_el8.4.0+847+ee687b6c.x86_64.rpm

    官方离线安装包,亲测可用

    ruby-1.9.1-p0-i386-mswin32.zip

    "ruby-1.9.1-p0-i386-mswin32.zip" 是一个针对Windows操作系统编译的Ruby编程环境的压缩包,发布于2009年6月20日,当时是Ruby 1.9.1版本的最新版。 Ruby 1.9.1是一个重要的版本更新,引入了许多改进和新特性,包括...

Global site tag (gtag.js) - Google Analytics