Enjoy yourself!
分类: Windows平台
2013-05-04 11:50:19
本文仅属于半原创作品,属于总结性文章,各种强大的技术性内容,源自于谷歌和度娘。。。
如果侵犯了各原创的版权,需要加原文引用什么的,可以在评论下跟我说,并且说声抱歉。。。
最近由于工作需要,开始研究在windows制作软件,用于接收单片机传出的串口数据,处理和打印,在此之前,我只学过在linux下面使用QT,和制作用于QT平台的软件,并且没学怎么打包,对于这方面完全是个新手,所以下面的内容也只能通过一个新手肤浅的角度去解释我所理解的东西。
首先是QT的windows版本,以前也用过一个,但是之前在windows下不能编译的,只能编辑,然后在linux下面编译。这方法明显现在是行不通的,所以在网上找了个windows版本的。
网上很多人说要下mingw和qt creator 两个东西都要下载什么的,我比较嫌麻烦,下载了个说是集成的东西,现在也能用。
为了软件兼容我以前在linux写的程序,我下载的是4.7.2版本的QT【 】
另外也附上网上最多人说的那两个软件,不过没测试过
mingw:【 】
QT creator:【】
关于QT生成有图标的EXE
1.准备一个.ico文件(如myIcon.ico可在网上在线转换)并放到工程目录中(.pro所在目录)
2.新建文件,选择General中的TextFile,保存为.rc文件(如icon.rc)
3.在文件中写入IDI_ICON1 ICON DISCARDABLE "myIcon.ico"
4.编辑.pro文件在 OTHER_FILE += \ 后加上 RC_FILE = \
icon.rc icon.rc
5.编译生成新的exe文件,就会带上图标了。
关于NSIS制作安装包
首先是编译生成exe文件。
在QT左边Project那选择release,然后编译生成exe文件。此时,你在QT下运行正常,如果你直接双击打开,会提示出错的,这是动态库无法链接的问题(好像是)。要解决这个问题,在QT的安装包里面找到QtCore4.dll、QtGui4.dll、mingwm10.dll、libgcc_s_dw2-1.dll,拷贝到exe的目录下,就能运行了。另外,如果你有用到jpeg的图片,就要把qjpeg4.dll这个也复制过去。当然,如果你在编程的时候用到了别的模块,如network模块(在.pro目录下 QT += core gui network),就需要加上该模块的链接文件,如QtNetwork4.dll。
虽然网上说这些文件都在一个lib里面的,但是我的似乎不是这样。
我的QT安装在D盘,所以那些文件在D:\QT\2010.05\qt\bin中,下面在编写NSIS脚本的时候,我的目录也是写"D:\QT\2010.05\qt\”。
此时的exe文件就可以双击打开了,如果想做个安装包,其实也是同样道理,把这些文件打一个安装包,安装包解开之后,也是生成同样的一些文件的。
这里推荐一个NSIS安装包制作工具。虽然后来在网上有看到说一些简单易懂一点的,纯界面式安装包制作工具,但这个安装包貌似还挺多人说不错的,并且看着网上的解释,用向导做一个并不难,并且完成之后还可以改很多很多东西(这个比较复杂,目前我还不会)。
分享一下我下载的NSIS,中文版并且有很多插件,虽然版本旧了点,但个人认为不影响使用。【 】
网上的NSIS的使用教程主要有两种,一种是通过编写脚本文件,直接生成安装包。【 】虽然直接编写脚本,有些深奥(对我来说),但是先了解这个对之后的拓展很有帮助,而且这个脚本语言感觉也不是太难。不过如果只用上面提供的脚本做安装包,功能就比较单一,比如会没哟是否同意协议之类的东西。
另外有一点必须要注意的是,这篇文章的文件路径的斜杠反了 !define QTDIR "D:/Qt/4.7.0" → !define QTDIR "D:\Qt\4.7.0" 如果是用记事本打开用替换功能的话,要注意rmDir /r "$INSTDIR" 这个斜杠的方向是对滴~
还有另外一种是通过脚本向导。可以看【】教使用NSIS的,或者【】 针对QT的,它那个软件链接是没有插件的英文版的,我装了后来就卸了,装了我上面提供链接的那个。
不过有一点它貌似没有提到,就是添加文件那里除了添加那个exe以外,还需要添加之前说的那些.dll文件。第一次用的时候就只加了exe所以软件都用不了。
虽然用向导很简单,但是相对的,能修改的东西就相当的有限,想做个东西,能完全属于自己(我承认我的占有欲是太强了点),还是得学学脚本语言。
我的建议是,先看看那个基础的脚本语言介绍【 】,知道生成安装包大概怎么回事,然后再学【】做个安装包。做完安装包会把生成的脚本文件显示出来的,可以根据【】所说的进一步加强安装包的定制。
最后总结一下用脚本向导的几个步骤:
1.在QT的Project上选择release编译,生成exe文件
2.打开NSIS,选择VNISEdit(编译器环境)
3.选择“使用脚本向导创建新的脚本文件”或在“文件”中选择“新建脚本:向导”
4.添加QT的exe文件,以及所有用到的动态链接库
必要的:D:\QT\2010.05\qt\bin\QtCore4.dll
D:\QT\2010.05\qt\bin\QtGui4.dll
D:\QT\2010.05\qt\bin\mingwm10.dll
D:\QT\2010.05\qt\bin\libgcc_s_dw2-1.dll
和exe文件一起,放在$INSTDIR下面(默认的)
选用的:D:\QT\2010.05\qt\plugins\imageformats\qjpeg4.dll
这个放在$INSTDIR\imageformats下面,目的是为了按模块分开方便管理来着,貌似在讲脚本的时候有提过。
另外还有用VS2008编译的,这个我没研究,不过貌似挺强大的,有空可以去研究一下【】