注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

沙漠里de烟雨

原创分享,禁止转载

 
 
 

日志

 
 

Qt---Qt5.1 + VS2010 + windows 环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包  

2014-04-15 16:30:11|  分类: QT5.x与QML |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

折腾了两天,终于把Qt的发布拿下:

编程环境:windows 2008 R2  64位,Qt5.1

这里建议在xp下进行编译,相关的dll从此系统中获取。

如果直接 把相关的Qt 的dll放在exe的目录下,在别的系统中是不能运行的。因为它还需要加载一些运行库。
这里使用vs2010,故运行库为msvcp100.dll,msvcr100.dll等等。
最终效果图:
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生
          
若想知道它依赖哪些库,可使用,ProcessExplorer来查看它依赖哪些库(或者使用dependency walker)。
方法:Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生
运行exe,然后打开processExplorer.,
默认是看不到dll依赖视图的,view -> Lower panel viewer -> DDLs;
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生
然后找到所要查找的exe,在dll视图中列出了所有依赖的库。有些库为系统自带的,有些为编译器库以及Qt库。我们要拷贝的就是编译器库以及Qt库。方法是,右键所选的dll,propreties/explorer,将高亮显示的那个库复制到所要发布的exe的当前目录
下。Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生

Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生
一般含有:
icudt51.dll (22.2M,可以从http://qlcplus.sourceforge.net/icudt51.dll中下载711kB版本的dll,注,此dll不能用upx来压缩)
icuin51.dll
icuuc51.dll
libEGL.dll
libGLESv2.dll
msvcp100.dll
msvcr100.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
Qt5Widgets.dll(如果有网络模块QNetWork)
Qt5Xml.dll(如果使用QXML)
以及
platforms/qwindows.dll
imageformats/qgif.dll...等(如果用到图片)
这些文件夹是按5.1.0\msvc2010_opengl\plugins里相应的文件夹命名的。
如果还用到了打印,还应带上printsupport\windowsprintersupport.dll
其它如此等等。
如果觉得dll文件太大,可以下载upx进行无损压缩。下载地址:
http://upx.sourceforge.net/   这里选择下载upx391w(windowg下的x86版)
将下载到的文件解压后,使用命令行进行解压,如:Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生
cd C:\Users\Tomsen\Desktop\upx391w 
upx.exe C:\Users\Tomsen\Desktop\dd\*.dll
(或者单个单个的压缩也可)压缩后会替换原来的文件。这时会发现比原来的小很多。
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生
 
若要打包成一个单个的非安装的exe文件,下载Enigma进行封包。
方法:
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生
选择待封包的主程序exe
然后在"文件"选项卡中增加文件(.dll),如果像platforms/qwindows.dll这样的文件,应该在"%DEFAULT FOLDER%"下新建文件夹并命名成platforms然后再将qwindows.dll加入。
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生
最后文件选项,选择压缩,然后执行封包。会生出一个如exe文件(如原来叫trader.exe,封包后trader_boxed.exe)。此文件即可到处运行,不用带dll。
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 - 漠雨 - 沙漠里de烟雨__原创人生

最后Trader_boxed.exe和Config_Files就是程序运行所需要的文件。

当然你还可以使用NSIS或VS自带的打包工具生成安装包。这里就简单介绍使用NSIS来打包
打开NSIS v2.45的NSIS菜单,如下:
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
单击   编译器 / VNISEdit(编译器环境)
后,弹出如下窗口:
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生

文件/新建脚本:向导
下一步,如下,输入你想写入的相关信息:
 
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生

下一步,如下,
 
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
下一步,如下,如果没有授权文件,请删除下面的字串,
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
下一步,删除右侧的两行,然后单击第二个按钮,选择目录树,如下:
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
如下,两个都勾选,
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
如下,查看应用程序是不是所要指定的主程序,如果目录中包含多个exe,这个选项一定得注意,
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
完成后,找到关键字CreateShortCut ,修改默认的程序图标为自己想要的图标,
在最后增加  [要留空格] “” [空格] “$INSTDIR\图标相对于exe所在的相对目录(图标文件得是ico格式)”
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生

 最后保存,然后主菜单中 NSIS/编译脚本,即在桌面生成了安装程序,如下。
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
 
Qt---Qt5.1 + VS2010 + windows  环境下的 Qt 程序的发布,以及打包成一个exe文件 或用NSIS快速打包 - 漠雨 - 沙漠里de烟雨__原创人生
  评论这张
 
阅读(8979)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017