概述

在上一篇文章中简单介绍了Qt IFW的优势,并且介绍了如何下载安装软件,那么,在本篇中来看一下如何使用IFW创建一个最简单的应用安装包,并介绍一些基本用法。

运行示例

在介绍之前我们首先跑一个Qt IFW安装过后自带的一个示例,以startmenu为例,打开安装目录下的example文件夹:

Qt IFW基本用法_安装程序


找到startmenu示例:

Qt IFW基本用法_配置文件_02

其目录结构是这样的:

Qt IFW基本用法_安装程序_03


是不是很熟悉,pro文件,不就是Qt的工程文件吗, 这和一个常规的Qt工程项目差不多,那么直接在Qt creator中打开这个startmenu.pro文件,目录结构如下:

Qt IFW基本用法_配置文件_04

然后二话不说,直接编译运行,运行后会弹出一个对话框:

Qt IFW基本用法_安装程序_05


别管它,回到文件夹中找到刚刚编译生成的文件,会发现生成了一个install.exe

Qt IFW基本用法_xml_06

ok,这就是最终生成出来的安装包,直接双击运行:

欢迎页面:

Qt IFW基本用法_xml_07


选择安装目录

Qt IFW基本用法_配置文件_08


选择需要安装的组件

Qt IFW基本用法_xml_09


开始菜单快捷方式

Qt IFW基本用法_配置文件_10


准备安装

Qt IFW基本用法_xml_11


Qt IFW基本用法_xml_12


这就完成了整个安装流程。

打包文件分析

以上演示了最基础的一个打包流程,那么接下来开始分析目录结构以及配置文件。

目录结构

还是以上面的示例来讲解,其目录结构为:

Qt IFW基本用法_IFW基本用法_13


这里主要包含了两个文件夹,​​config​​​和​​packages​​​,其中​​config​​​下面有一个​​config.xml​​文件,packages下面的meta目录包含package.xml和installscript.qs文件

其中,这里最重要的两个文件就是​​config.xml​​​和​​package.xml​

  • config.xml:打包文件的基本配置信息
  • package.xml:软件包信息配置文件
  • data:该文件夹存放将要打包的所有文件
  • installscript.qs:软件包信息脚本,在package.xml中引用

创建安装程序

前面通过运行Qt IFW自带的示例已经对打包文件目录结构及基本的运行流程有了大致的了解,那么接下来就看看如何创建一个自己的安装程序。

步骤

创建安装程序必须完成的以下任务:

  • 1.创建一个软件包目录,其中将包含所有配置文件和可安装的软件包。
  • 2.创建一个配置文件config.xml,其中包含有关如何构建安装程序二进制文件和联机存储库的信息。
  • 3.创建一个软件包信息文件package.xml,其中包含有关可安装组件的信息。
  • 4.创建安装程序内容并将其复制到软件包目录,比如上面的data。
  • 5.使用该binarycreator工具创建安装程序。

创建配置文件

在config目录中,创建一个config.xml包含以下内容的文件:
基本信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<Installer>
<Name>Your application</Name>
<Version>1.0.0</Version>
<Title>Your application Installer</Title>
<Publisher>Your vendor</Publisher>
<StartMenuDir>Super App</StartMenuDir>
<TargetDir>@HomeDir@/InstallationDirectory</TargetDir>
</Installer>

说明:

  • <Name>元素指定程序名称
  • <Version>元素指定的应用程序版本号
  • <Publisher>元素指定软件(Windows控制面板中所示)的发布者。
  • <StartMenuDir>元素指定用于开始菜单中默认程序名称。
  • <TargetDir>元素指定的是程序默认安装位置,其可选的位置​​可参考这里​

配置文件中所有可配置项,​​请参考这里​

创建包装信息文件

要向安装程序提供有关组件的信息,需要创建一个package.xml文件,并包含以下内容,并将其放置在meta目录中:

<?xml version="1.0" encoding="UTF-8"?>
<Package>
<DisplayName>The root component</DisplayName>
<Description>Install this example.</Description>
<Version>0.1.0-1</Version>
<ReleaseDate>2010-09-21</ReleaseDate>
<Licenses>
<License name="Beer Public License Agreement" file="license.txt" />
</Licenses>
<Default>script</Default>
<Script>installscript.qs</Script>
<UserInterfaces>
<UserInterface>page.ui</UserInterface>
</UserInterfaces>
</Package>

关于包信息文件的详细写法,​​请参考这里​

指定组件信息

以下元素的信息显示在组件选择页面上:

  • <DisplayName>元素指定组件的名称 ->(1)
  • <Description>元素指定当组件被选择时显示的文本 ->(2)
  • Qt IFW基本用法_安装程序_14

指定安装程序版本

该元素可以在用户可用时向他们推广更新。

添加许可证

<License>元素指定包含用于显示的许可检查页面上的许可协议的文本文件的名称:

Qt IFW基本用法_安装程序_15

选择默认内容

<Default>元件指定组件是否是默认选中。该值true将组件设置为选中状态。

创建安装程序内容

将所有需要打包的文件全部拷贝到data目录下去。

开始打包

一切准备就绪,开始通过命令行来进行最后的打包动作,在终端通过命令行 切换到Qt IFW安装目录中的bin目录下去,然后执行:

binarycreator.exe -c config\config.xml -p packages YourInstaller.exe

config\config.xml 是上面创建好的配置文件。

执行完命令后就会自动生成一个安装包exe。这就是最终想要的文件。

当然,也可以像自带示例那样,直接创建一个工程文件,然后在Qt creator中编译即可自动生成。
以下是工程文件pro的内容示例:

TEMPLATE = aux

INSTALLER = installer

INPUT = $$PWD/config/config.xml $$PWD/packages
example.input = INPUT
example.output = $$INSTALLER
example.commands = ../../bin/binarycreator -c $$PWD/config/config.xml -p $$PWD/packages ${QMAKE_FILE_OUT}
example.CONFIG += target_predeps no_link combine

QMAKE_EXTRA_COMPILERS += example

OTHER_FILES = README

其原理也是执行binarycreator 命令,就不再赘述了。

ok,以上就是整个Qt IFW打包流程的基本介绍,接下来会在下一篇文章中通过一个实际的项目来做打包文件。