1、Qt之打包发布(NSIS详解)
发布方式
Qt发布的时候,通常使用两种方式:
(1)静态编译
(2)动态编译
静态发布虽然不需要较多的dll,发布简单、方便,但是往往会牵扯到授权问题(详情请查看Qt LGPL授权),动态发布则可以避免。。。如果附带了Qt的dll,就相当于发布了Qt的dll,而这些库是属于Qt的,这足以保证使用者知道程序使用了LGPL版本的Qt(这部分还有待探讨)。
查找依赖项
1、检测可执行程序依赖模块
2、常用依赖库
(1)Qt模块库
(2)ICU依赖库
(3)EGL依赖库
(4)插件库(Qt安装目录下即可找到D:\Software\Qt\Qt5.1.0\5.1.0\msvc2010\plugins\platforms)
注意:查找对应的插件文件夹,粘贴到安装目录(一定要保持目录结构,例如“ platforms/***.dll”),详细结构见打包发布准备的文件组织结构。
(5)VS运行时库(在VS安装目录下即可找到D:\Software\Microsoft Visual Studio\VC\redist)
发布程序的时候注意版本(Debug/Release)
关于NSIS
1、NSIS简介
(1)NSIS是什么?
(2)NSIS有什么特点?
2、工具
3、使用方式
准备文件
以下是我即将打包的所有文件,安装包目录结构(包括:可执行程序、 插件库、运行时库、授权文件、卸载程序图标等等!)如下图所示:
1、利用向导制作安装包:
2、填写应用程序基本信息
3、指定安装程序所用选项
注意:这里选择语言为SimpChinese
4、设置应用程序安装目录与授权文件
5、指定应用程序文件
6、指定创建应用程序图标
7、选择安装程序完成后运行的动作
8、指定接触安装程序属性
9、进行脚本编译、保存
10、等待编译完成,即可运行打包后的安装包
(1)安装程序
(2)此处显示授权文件中的内容
(3)选择安装目录
(4)运行程序,并显示“自述文件”
(5)运行结果
===============================================================
将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窗口
这里,我们以test.exe为例,在
Qt环境下,将exe运行起来,在ProcessExplor中,找到就可以找到test.exe,选中,在下面就看到依赖的dll了。
系统目录下的,一般不用关心,按Path排序,看Qt目录及mingw目录下的,将这些dll拷贝出来,单独放到一个目录下。
三,打包
打包工具,这里选用Enigma Virtual Box,
下载:
http://pan.baidu.com/share/link?shareid=1837762045&uk=673227135
安装,运行
Enter Input File Name中,选择exe
Enter Output File Name,输出文件名称
点Add按钮,将前面准备好的dll文件,添加进来
点Files Options,勾选Enable Files Virtualization和Compress files,OK
最后,点Process,大告成。
打包生成的exe文件也可以象静态编译的一样,可以独立运行了。