论坛首页 编程语言技术论坛

制作最小Ruby/Gtk win32 runtime

浏览 4580 次
精华帖 (0) :: 良好帖 (8) :: 新手帖 (8) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-13  
最近在学ruby/gtk2,顺手就写了个小程序.
用exerb做了个exe后,发现gtk库没有自动添加.让用户去安装gtk win32 runtime很影响用户体验,于是尝试着找出一个最小环境。

2008-9-17 更新
ruby\lib\GTK\etc\gtk-2.0\gdk-pixbuf.loaders
如果项目用到图片必须加入这个文件.
然后去ruby\lib\GTK\lib\gtk-2.0\2.10.0\loaders下找到你用到的图片的loader
例如:libpixbufloader-png.dll
完了吧之前的build\etc\gtk-2.0\gdk-pixbuf.loaders里的libpixbufloader-png.dll
改成build里的相对路径就好了

在你第一次用gtkthemeselector.exe的时候会在
build\etc\gtk-2.0\下生成一个gtkrc文件,我默认写上ms-windows.这样就能设定默认主题了.

----------------- 以下是原文 ---------------

开发环境:
ruby186-26
ruby-gnome2-0.16.0-1-i386-mswin32

第一步 打包win32可执行文件
我使用的exerb,具体方法我就不说了,网上一查一大堆.
用mkexy弄出yourApp.exy文件,打开这个文件将general:core: cui改成gui.我默认是出的cui.就是控制台模式,会有命令行窗口的,用户体验不好。
然后用exerb yourApp.exy来构造出一个红宝石图标的yourApp.exe
这时点击这个exe,会提示gtk的dll没有找到.不急我们进下一步。

第二步 最小win32 gtk runtime
所有需要的dll都在ruby\lib\GTK\bin下,我测试 只要下面几个dll程序就能运行了
新建个目录吧,就是将要放最小gtk runtime的.比如build目录
libgtk-win32-2.0-0.dll
iconv.dll
libglib-2.0-0.dll
libgdk-win32-2.0-0.dll
libfreetype-6.dll
libcairo-2.dll
libpango-1.0-0.dll
libgobject-2.0-0.dll
libpangoft2-1.0-0.dll
libpng12.dll
libfontconfig-1.dll
libatk-1.0-0.dll
libgdk_pixbuf-2.0-0.dll
xmltok.dll
zlib1.dll
xmlparse.dll
intl.dll
libpangowin32-1.0-0.dll
libpangocairo-1.0-0.dll
libgthread-2.0-0.dll
libgmodule-2.0-0.dll
这些都copy到build
现在程序可以跑了,但是有乱码,而且样式很丑

先解决乱码问题
去ruby\lib\GTK\etc目录 copy到build
打开etc\pango\pango.modules找到"pango-basic-fc.dll"那一行,去那个目录把文件copy到build
并且把绝对路径改成相对与pango.modules的相对路径

然后解决样式问题
去ruby\lib\GTK\lib\目录,整个lib copy到build下
其实只要ruby\lib\GTK\lib\gtk-2.0\2.10.0\engines\libwimp.dll,这个是ms-windows theme的dll
然后去ruby\lib\GTK\share吧整个share copy到build下
其实只要share\themes\MS-Windows\gtk-2.0\gtkrc.其他可以删除
这两个文件就是ms-windows的theme了
最后吧ruby\lib\GTK\bin\gtkthemeselector.exe copy到build下.你就可以选择ms-windows theme了,
你也可以按照这个办法找出其他的theme.反正我是不要了,gtk默认带的theme都异常的丑陋

至此最小gtk win32 runtime就弄好了.不压缩7.89M,压缩rar后2.61M.还是可以接受的。

后记:
要说要有什么问题,就是
1.可能我写的app没有用到一些gtk库,可能会需要其他的dll,可以再加,反正exe会提示,这个很简单
2.如果能默认出ms-windows theme就好了,默认情况会是一个很丑的theme,需要gtkthemeselector.exe改一下
我把MS-WINDOWS的folder name改成DEFAULT也没用.我会继续研究的。(2008-9-17 更新里解决了这个问题)

附件 送上那个程序和runtime package.
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics