Qt打包发布方法

1、Qt之打包发布(NSIS详解)

发布方式   

      Qt发布的时候,通常使用两种方式:
     (1)静态编译
     (2)动态编译
      静态编译:把相关联的库一并引入可执行程序,虽然发布简单,但可执行程序较大。。。
      动态编译:相关联的库,以dll的形式引用,不被包含进可执行程序,发布不方便,但可执行程序较小。。。
      静态发布虽然不需要较多的dll,发布简单、方便,但是往往会牵扯到授权问题(详情请查看Qt  LGPL授权),动态发布则可以避免。。。如果附带了Qt的dll,就相当于发布了Qt的dll,而这些库是属于Qt的,这足以保证使用者知道程序使用了LGPL版本的Qt(这部分还有待探讨)。

查找依赖项
1、检测可执行程序依赖模块
      下载工具:Dependency Walker
      打开可执行程序,检测依赖项
Qt打包发布方法_第1张图片
      检测完成之后,将所需依赖库拷贝进去。。。再次进行检测,反复进行。

2、常用依赖库
(1)Qt模块库
      Qt5Cored.dll
      Qt5Guid.dll
      Qt5Widgetsd.dll
(2)ICU依赖库
      icudt51.dll
      icuin51.dll
      icuuc51.dll
(3)EGL依赖库
      libEGLd.dll
      libGLESv2d.dll
(4)插件库(Qt安装目录下即可找到D:\Software\Qt\Qt5.1.0\5.1.0\msvc2010\plugins\platforms)
      图片支持库:imageformats
      音频、视频支持库:mediaservice
      平台支持库:platforms
      等等。。。
       注意:查找对应的插件文件夹,粘贴到安装目录(一定要保持目录结构,例如“ platforms/***.dll”),详细结构见打包发布准备的文件组织结构。     
(5)VS运行时库(在VS安装目录下即可找到D:\Software\Microsoft Visual Studio\VC\redist)
      msvcp100d.dll
      msvcr100d.dll

    注意:发布程序的时候注意版本(Debug/Release)
      如果是Debug版本的则是.前面带d的(Qt5Cored.dll、Qt5Guid.dll、Qt5Widgetsd.dll)
    如果是Release版本的则是.前面不带d的(Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll)
      
      以上是我所用到的依赖库,基本可以解决问题,包括:
       Qt打包发布方法_第2张图片

关于NSIS
1、NSIS简介
(1)NSIS是什么?
      一款免费的Win32安装、卸载系统!
(2)NSIS有什么特点?
      脚本简洁高效、系统开销小,进行安装、卸载、设置、解压文件也不在话下,几乎可以做所有的事情。

2、工具
      NSIS Edit + NSIS

3、使用方式
      脚本向导 + 修改代码 = 个性化安装包

准备文件
      以下是我即将打包的所有文件,安装包目录结构(包括:可执行程序、 插件库、运行时库、授权文件、卸载程序图标等等!)如下图所示:
Qt打包发布方法_第3张图片
1、利用向导制作安装包:
Qt打包发布方法_第4张图片

2、填写应用程序基本信息

Qt打包发布方法_第5张图片

3、指定安装程序所用选项
       注意:这里选择语言为SimpChinese
Qt打包发布方法_第6张图片

4、设置应用程序安装目录与授权文件

Qt打包发布方法_第7张图片

5、指定应用程序文件

Qt打包发布方法_第8张图片

6、指定创建应用程序图标

Qt打包发布方法_第9张图片

7、选择安装程序完成后运行的动作

Qt打包发布方法_第10张图片

8、指定接触安装程序属性

Qt打包发布方法_第11张图片

9、进行脚本编译、保存

Qt打包发布方法_第12张图片

10、等待编译完成,即可运行打包后的安装包
Qt打包发布方法_第13张图片

      大功告成之后,即可进行安装!

(1)安装程序

Qt打包发布方法_第14张图片

(2)此处显示授权文件中的内容

Qt打包发布方法_第15张图片

(3)选择安装目录

Qt打包发布方法_第16张图片

(4)运行程序,并显示“自述文件”

Qt打包发布方法_第17张图片

(5)运行结果

Qt打包发布方法_第18张图片

      关于Qt的打包工具了解一些,个人感觉NSIS用起来比较顺手,脚本修改起来也方便,所以就推崇一下。。。若想将安装包变得更加美观,则需要手动修改脚本,更多信息请查找相关资料,此处不再多做介绍!

作者: ╰☆奋斗ing❤孩子`     原文: http://blog.sina.com.cn/s/blog_a6fb6cc90101fer8.html 。 

===============================================================
2、 将Qt 动态链接生成的exe及依赖dll打包方法
Qt静态 编译链接生成的exe文件,不需依赖一堆dll,可以独立运行,发布很方便。但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制。那有 没有办法即能享受静态编译的方便,又不受开源许可的限制呢?方法之一,就是用动态编译,然后把exe和需要的dll整合成一个 文件问题就解决了。


具体步骤:
一,先动态编译链接,生成exe文件
二,找到依赖的dll文件
这里,我们可以用Process Explore来获取所依赖的dll文件,还可以用工具depends(很好用)、process explore(Qt5)等。
下载: http://pan.baidu.com/share/link?shareid=1820917417&uk=673227135
打开procexp.exe,通过菜单View==》Lower Pane View==》DLLs  勾选,显示dll窗口
Qt打包发布方法_第19张图片


这里,我们以test.exe为例,在 Qt环境下,将exe运行起来,在ProcessExplor中,找到就可以找到test.exe,选中,在下面就看到依赖的dll了。 Qt打包发布方法_第20张图片
系统目录下的,一般不用关心,按Path排序,看Qt目录及mingw目录下的,将这些dll拷贝出来,单独放到一个目录下。


三,打包
打包工具,这里选用Enigma Virtual Box,
下载: http://pan.baidu.com/share/link?shareid=1837762045&uk=673227135
安装,运行
Qt打包发布方法_第21张图片
Enter Input File Name中,选择exe
Enter Output File Name,输出文件名称
点Add按钮,将前面准备好的dll文件,添加进来
点Files Options,勾选Enable Files Virtualization和Compress files,OK
最后,点Process,大告成。 打包生成的exe文件也可以象静态编译的一样,可以独立运行了。
Qt打包发布方法_第22张图片
具体参考:http://www.qtcn.org/bbs/read-htm-tid-53333.html

你可能感兴趣的:(方法,打包,qt,发布)