win7平台下QT软件的打包与发布(部署与安装)

软件编写调试好之后最重要的就是打包和发布,这样软件才好传播。

qt软件的打包发布一个难点是必备dll文件的识别。不少日志说用dependencyWalker,今天我试了一下发现查找dll不完全,比如辨识不了qwindows.dll(会报错could not find or load the qt platform plugin windows)。并且还要自己手动添加不是很方便。一番查找后发现qt内置一个现成的dll依赖性工具windeployqt十分好用,该工具在qt的bin/目录下。

参考官方文档:http://doc.qt.io/qt-5/windows-deployment.html#application-dependencies

第一步是添加qt的bin/目录进系统path变量。很简单,在系统属性里设置,添加D:\Qt\5.4\msvc2010_opengl\bin;到系统path环境变量。(qt安装目录不尽相同)

第二部,在任意目录新建文件夹,把编译完成后的qt exe可执行程序拷贝过去。从命令行模式进入该文件夹,执行语句windeployqt xxxx.exe. 之后该工具会分析程序依赖性,自动添加必要dll文件至该目录。运行时命令行提示如下

D:\TVS\Qt\LGTVSerialControl>windeployqt terminal.exe --release
D:\TVS\Qt\LGTVSerialControl\terminal.exe 32 bit, release executable
Adding Qt5Svg for qsvgicon.dll
Direct dependencies: Qt5Core Qt5Gui Qt5SerialPort Qt5Widgets
All dependencies   : Qt5Core Qt5Gui Qt5SerialPort Qt5Widgets
To be deployed     : Qt5Core Qt5Gui Qt5SerialPort Qt5Svg Qt5Widgets
Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not s
et.
Updating icuin53.dll.
Updating icuuc53.dll.
Updating icudt53.dll.
Updating Qt5Core.dll.
Updating Qt5Gui.dll.
Updating Qt5SerialPort.dll.
Updating Qt5Svg.dll.
Updating Qt5Widgets.dll.
Creating directory iconengines.
Updating qsvgicon.dll.
Creating directory imageformats.
Updating qdds.dll.
Updating qgif.dll.
Updating qicns.dll.
Updating qico.dll.
Updating qjp2.dll.
Updating qjpeg.dll.
Updating qmng.dll.
Updating qsvg.dll.
Updating qtga.dll.
Updating qtiff.dll.
Updating qwbmp.dll.
Updating qwebp.dll.
Creating directory platforms.
Updating qwindows.dll.
Creating qt_ca.qm...
Creating qt_cs.qm...
Creating qt_de.qm...
Creating qt_fi.qm...
Creating qt_hu.qm...
Creating qt_it.qm...
Creating qt_ja.qm...
Creating qt_ru.qm...
Creating qt_sk.qm...
Creating qt_uk.qm...

D:\TVS\Qt\LGTVSerialControl>

这样必要的库文件就自动添加完毕。

后面就是打包形成安装包了。QT官方推荐了3种软件(https://qt-project.org/wiki/BuildingQtInstallers+&cd=1&hl=en&ct=clnk&gl=us),这里举例第二种软件NSIS说明使用方法。

下载安装NSIS。安装后启动界面如下:

最简单的方法是使用第二个选项Installer based on zip file(由zip文件构建安装包)

把刚才使用了windeployqt的整个目录打包成zip文件,用NSIS加载该zip文件,设置好默认安装目录,点generate就可以打包成安装包了。

时间: 2024-10-24 09:59:01

win7平台下QT软件的打包与发布(部署与安装)的相关文章

win7平台下QT软件的打包与发布 (利用NSIS脚本制作安装包)

接上文:http://blog.csdn.net/shallen320/article/details/44915649 上文介绍了如何查找Qt程序依耐性,如何利用NSIS 和 .zip文件制作简单的压缩包.上文所用的方法制作的安装包十分简单,连创建桌面快捷方式都没有.本文介绍如何使用NSIS脚本语言制作一个略微复杂的安装包. 下面是我使用的NSIS脚本语言范例,含有简单全面的功能,包括: 设置安装文件版本,公司,版权信息 安装拷贝指定文件 创建开始菜单,桌面快捷方式 创建卸载程序,并能在win

Windows平台下Qt开发环境的搭建

Qt 是采用开源和商用双协议发布的开放源代码的图形开发类库,现在很多图形化的开源软件都使用了Qt. 下载地址:http://qt-project.org/downloads 1. 下载安装包 你可以从下载页下载已经编译好的二进制安装包,也可以下载源码自行编译,下面是二进制软件安装包下载列表的部分截图. 可以看到,当前最新的版本是Qt 5.3.1,目前已经提供了Window 32/64bit,Linux 32/64bit,Mac, Android以及iOS版本的开发包.本文档中将介绍目前最新的最复

win7平台下React-Native Android:Unable to upload some APKs

一.问题描述 根据网络上的Win7平台下React-native配置教程配置好开发环境的过程中,在艰难进行到react-native run-android这一步时,发现一直出现错误,截图如下: 错误的说明信息表明是 Ubable to upload some APKs.经过网上搜索最后在这里(http://www.hacksparrow.com/react-native-android-unable-to-upload-some-apks.html)得到了一个比较全面的答案,我简单地翻译一下原

Win7平台下React-Native开发之Android项目打包发布流程

一.bundle文件 React-Native开发步骤中,有一个步骤是使用命令 react-native start 去启动一个基于Node.js的服务,名字为packager.这个packager的主要功能是:1.监视当前目录下相关文件的改动:2.监听在本机的8081(默认)端口,为正确的请求提供相应的bundle文件.总结一点来说就是:bundle文件是根据项目目录下相应文件的最新内容来动态生成的,这样在开发过程中就能实时地观察我们修改JS文件所带来的程序的改变.因为这个bundle文件就是

Windows平台下Qt中glut库的使用

用Qt中的QGLWidget窗体类中是不包括glut工具库的,难怪在myGLWidget(在我的程序中是QGLWidget的派生类)中绘制实心球体是说“glutSolidSphere”: 找不到标识符,就是说没有这个函数的声明.接下来就来安装glut库: 1.先下载glut库http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip. 2.将下载下来的文件解压,将glut32.lib和glut.lib两个lib文件移到qt目

关于基于GDAL库QT软件平台下C++语言开发使用说明

背景前提 地理空间数据抽象库(GDAL)是一个用于读取和编写栅格和矢量地理空间数据格式的计算机软件库,由开源地理空间基金会在许可的X / MIT风格免费软件许可下发布. 作为一个库,它为调用应用程序提供了一个抽象数据模型,用于所有支持的格式. 它还可以构建有各种有用的命令行接口实用程序,用于数据转换和处理. PROJ.4库支持投影和转换.(摘自维基百科) 相关的OGR库(OGR Simple Features Library [2])是GDAL源代码树的一部分,它为简单的特征矢量图形数据提供了类

QT软件打包图文教程

写这篇博客主要是记录一下QT软件打包的过程,这样在以后遇到问题就可以看一下...废话不多说,直接进入正文... 首先介绍环境:windows + QT5.2 第一步:当然是准备好要打包的exe了,如果没有exe,那还谈什么打包 第二步:准备打包工具,主要有Dependency Walker  +  FilePacker +everything,第一个软件用于检测动态链接库,第二个软件用于打包软件,生成单个exe文件:第三个软 件主要用来在电脑中查找所需要的文件,很快很方便 具体过程截图如下: 1

Mac平台下的Qt程序在Windows下执行编译运行出现的中文乱码问题

Mac平台下的Qt程序在Windows下执行编译运行时,QString::asprintf()部分会出现的中文乱码问题,之前已经使用QStringLiteral宏解决了一个中文乱码问题: 但是此种情形单凭QStringLiteral宏解决不了. 原因: mac下采用MinGW编译,在Windows下可能是MinGW,也可能是MSV2017等VS编译器编译.如果win平台下是MinGW编译,在mac下写好的程序在win平台下运行不会出现乱码: 如果win下是MSV2017编译就会出现中文乱码,需要

wchar_t内置还是别名(wchar_t在windows下是16整数的别名,在linux等平台下是32位整数的别名。MSVC2008开始默认是/Zc:wchar_t)

接前一篇C++ ABI之名字改编(以Qt为例),继续看看C++名字改编相关的问题. 问题 MSVC 有一对选项/Zc:wchar_t- 与 /Zc:wchar_t控制wchar_t 于是 wchar_t 可以是 unsigned short 或 __wchar_t(称为原生类型?) 的别名 两个东西混用会怎么样? 首先考虑,会混用么?,是杞人忧天么? 由于 Qt 为 MSVC 提供的二进制包采用的前者/Zc:wchar_t-.考虑: 如果你编译自己的Qt程序时,启用了后者,会怎么样? 如果Qt程