发布方式   

    Qt发布的时候,通常使用两种方式:

   (1)静态编译

   (2)动态编译

    静态编译:把相关联的库一并引入可执行程序,虽然发布简单,但可执行程序较大。。。

    动态编译:相关联的库,以dll的形式引用,不被包含进可执行程序,发布不方便,但可执行程序较小。。。

LGPL授权),动态发布则可以避免。。。如果附带了Qt的dll,就相当于发布了Qt的dll,而这些库是属于Qt的,这足以保证使用者知道程序使用了LGPL版本的Qt(这部分还有待探讨)。

 

查找依赖项

1、检测可执行程序依赖模块

    下载工具:Dependency Walker

    打开可执行程序,检测依赖项

QT打包(有些电脑 缺少的vc库文件list)_NSIS

​     检测完成之后,将所需依赖库拷贝进去。。。再次进行检测,反复进行。

 

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打包(有些电脑 缺少的vc库文件list)_NSIS_02

 

关于NSIS

1、NSIS简介

(1)NSIS是什么?

    一款免费的Win32安装、卸载系统!

(2)NSIS有什么特点?

    脚本简洁高效、系统开销小,进行安装、卸载、设置、解压文件也不在话下,几乎可以做所有的事情。

 

2、工具

    NSIS Edit + NSIS

 

3、使用方式

    脚本向导 + 修改代码 = 个性化安装包

 

准备文件

    以下是我即将打包的所有文件,安装包目录结构(包括:可执行程序、插件库、运行时库、授权文件、卸载程序图标等等!)如下图所示:

QT打包(有些电脑 缺少的vc库文件list)_Qt_03

1、利用向导制作安装包:

QT打包(有些电脑 缺少的vc库文件list)_可执行程序_04

 

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

 

QT打包(有些电脑 缺少的vc库文件list)_NSIS_05

 

3、指定安装程序所用选项

注意:这里选择语言为SimpChinese

QT打包(有些电脑 缺少的vc库文件list)_NSIS_06

 

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

 

QT打包(有些电脑 缺少的vc库文件list)_Qt_07

 

5、指定应用程序文件

 

QT打包(有些电脑 缺少的vc库文件list)_NSIS_08

 

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

 

QT打包(有些电脑 缺少的vc库文件list)_NSIS_09

 

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

 

QT打包(有些电脑 缺少的vc库文件list)_可执行程序_10

 

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

 

QT打包(有些电脑 缺少的vc库文件list)_NSIS_11

 

9、进行脚本编译、保存

 

QT打包(有些电脑 缺少的vc库文件list)_可执行程序_12

 

10、等待编译完成,即可运行打包后的安装包

QT打包(有些电脑 缺少的vc库文件list)_NSIS_13

 

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

 

(1)安装程序

 

QT打包(有些电脑 缺少的vc库文件list)_Qt_14

 

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

 

QT打包(有些电脑 缺少的vc库文件list)_可执行程序_15

 

(3)选择安装目录

 

QT打包(有些电脑 缺少的vc库文件list)_NSIS_16

 

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

 

QT打包(有些电脑 缺少的vc库文件list)_可执行程序_17

 

(5)运行结果

 

QT打包(有些电脑 缺少的vc库文件list)_Qt_18

 

去把如下运行库拷出来放到exe路径下,要不然去遇到运行库错误,就异常尴尬了!

api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-datetime-l1-1-0.dll
api-ms-win-core-debug-l1-1-0.dll
api-ms-win-core-errorhandling-l1-1-0.dll
api-ms-win-core-file-l1-1-0.dll
api-ms-win-core-file-l1-2-0.dll
api-ms-win-core-file-l2-1-0.dll
api-ms-win-core-handle-l1-1-0.dll
api-ms-win-core-heap-l1-1-0.dll
api-ms-win-core-interlocked-l1-1-0.dll
api-ms-win-core-libraryloader-l1-1-0.dll
api-ms-win-core-localization-l1-2-0.dll
api-ms-win-core-memory-l1-1-0.dll
api-ms-win-core-namedpipe-l1-1-0.dll
api-ms-win-core-processenvironment-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-0.dll
api-ms-win-core-processthreads-l1-1-1.dll
api-ms-win-core-profile-l1-1-0.dll
api-ms-win-core-rtlsupport-l1-1-0.dll
api-ms-win-core-string-l1-1-0.dll
api-ms-win-core-synch-l1-1-0.dll
api-ms-win-core-synch-l1-2-0.dll
api-ms-win-core-sysinfo-l1-1-0.dll
api-ms-win-core-timezone-l1-1-0.dll
api-ms-win-core-util-l1-1-0.dll
api-ms-win-crt-conio-l1-1-0.dll
api-ms-win-crt-convert-l1-1-0.dll
api-ms-win-crt-environment-l1-1-0.dll
api-ms-win-crt-filesystem-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-multibyte-l1-1-0.dll
api-ms-win-crt-private-l1-1-0.dll
api-ms-win-crt-process-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
api-ms-win-crt-time-l1-1-0.dll
api-ms-win-crt-utility-l1-1-0.dll
concrt140.dll
msvcp140.dll
ucrtbase.dll
vcruntime140.dll