最近在学ruby/gtk2,顺手就写了个小程序.
用exerb做了个exe后,发现gtk库没有自动添加.让用户去安装gtk win32 runtime很影响用户体验,于是尝试着找出一个最小环境。
[color=blue][b]2008-9-17 更新[/b][/color]
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.这样就能设定默认主题了.
[color=red][b]----------------- 以下是原文 ---------------[/b][/color]
[b]开发环境:[/b]
ruby186-26
ruby-gnome2-0.16.0-1-i386-mswin32
[b]第一步 打包win32可执行文件[/b]
我使用的exerb,具体方法我就不说了,网上一查一大堆.
用mkexy弄出yourApp.exy文件,打开这个文件将general:core: cui改成gui.我默认是出的cui.就是控制台模式,会有命令行窗口的,用户体验不好。
然后用exerb yourApp.exy来构造出一个红宝石图标的yourApp.exe
这时点击这个exe,会提示gtk的dll没有找到.不急我们进下一步。
[b]第二步 最小win32 gtk runtime[/b]
所有需要的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
现在程序可以跑了,但是有乱码,而且样式很丑
[b]先解决乱码问题[/b]
去ruby\lib\GTK\etc目录 copy到build
打开etc\pango\pango.modules找到"pango-basic-fc.dll"那一行,去那个目录把文件copy到build
并且把绝对路径改成相对与pango.modules的相对路径
[b]然后解决样式问题[/b]
去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.还是可以接受的。
[b]后记:[/b]
要说要有什么问题,就是
1.可能我写的app没有用到一些gtk库,可能会需要其他的dll,可以再加,反正exe会提示,这个很简单
2.如果能默认出ms-windows theme就好了,默认情况会是一个很丑的theme,需要gtkthemeselector.exe改一下
我把MS-WINDOWS的folder name改成DEFAULT也没用.我会继续研究的。(2008-9-17 更新里解决了这个问题)
[b]附件[/b] 送上那个程序和runtime package.
用exerb做了个exe后,发现gtk库没有自动添加.让用户去安装gtk win32 runtime很影响用户体验,于是尝试着找出一个最小环境。
[color=blue][b]2008-9-17 更新[/b][/color]
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.这样就能设定默认主题了.
[color=red][b]----------------- 以下是原文 ---------------[/b][/color]
[b]开发环境:[/b]
ruby186-26
ruby-gnome2-0.16.0-1-i386-mswin32
[b]第一步 打包win32可执行文件[/b]
我使用的exerb,具体方法我就不说了,网上一查一大堆.
用mkexy弄出yourApp.exy文件,打开这个文件将general:core: cui改成gui.我默认是出的cui.就是控制台模式,会有命令行窗口的,用户体验不好。
然后用exerb yourApp.exy来构造出一个红宝石图标的yourApp.exe
这时点击这个exe,会提示gtk的dll没有找到.不急我们进下一步。
[b]第二步 最小win32 gtk runtime[/b]
所有需要的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
现在程序可以跑了,但是有乱码,而且样式很丑
[b]先解决乱码问题[/b]
去ruby\lib\GTK\etc目录 copy到build
打开etc\pango\pango.modules找到"pango-basic-fc.dll"那一行,去那个目录把文件copy到build
并且把绝对路径改成相对与pango.modules的相对路径
[b]然后解决样式问题[/b]
去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.还是可以接受的。
[b]后记:[/b]
要说要有什么问题,就是
1.可能我写的app没有用到一些gtk库,可能会需要其他的dll,可以再加,反正exe会提示,这个很简单
2.如果能默认出ms-windows theme就好了,默认情况会是一个很丑的theme,需要gtkthemeselector.exe改一下
我把MS-WINDOWS的folder name改成DEFAULT也没用.我会继续研究的。(2008-9-17 更新里解决了这个问题)
[b]附件[/b] 送上那个程序和runtime package.