• 使用Qt Installer Framework制作软件安装包


    概述

    Qt Installer Framework(缩写QIF)是Qt官方用于生成软件安装包的工具。包括Qt Creator和Qt Installer Framework自身的安装包都是由这个工具制作的。详细说明请访问QIF的官方文档

    环境

    我使用的环境是Windows7 64位和Qt Installer Framework 2.0.3

    下载

    首先根据自己的平台(Linux或Windows等)去Qt官网下载Qt Installer Framework的安装包或者源码。为了简单起见,我下载是安装包。然后像普通软件那样双击安装。

    目录结构

    安装好后,并不是一个直接可用的图形界面软件。而是提供了一些可执行的工具程序(Windows下是exe文件),然后根据规则,利用这些工具生成安装包。
    假设安装在D:,则生成目录D:QtIFW2.0.3,其中2.0.3是版本号。目录结构如下图所示。

    1、bin

    bin中包含的就是我们需要用到的工具。最简单地,我们只用其中一个,叫binarycreator.exe

    2、doc

    doc中包含帮助文档。文档的格式是网页(html)。也可以去官方网站上查看文档。文档是英文。不过很详细。

    3、examples

    examples中包含了很多Qt Installer Framework的例子。初学者只需要将例子作为模板,按照自己的情况修改即可。

    4、Licenses

    Licenses中包含了Qt Installer Framework的Licenses,例如LGPL等。

    准备

    1、目录结构

    用QIF生成安装包时,必须先按照规范建立目录结构。
    参考examples中的目录结构,例如examples/tutorial目录中的结构如下:

    规范的目录结构中,包含一个config文件夹和一个packages文件夹。其中config文件夹中只包含一个config.xml文件,用于描述软件以及安装包的一些信息。packages文件夹包含了安装包的信息描述、行为描述以及数据。其中,packages中的每一个子文件夹都表示不同的软件,或者软件的一个模块或者部件,例如com.vendor.product1、com.vendor.product2等等。
    其结构可能如下

    -packages
        - com.vendor.root
            - data
            - meta
        - com.vendor.root.component1
            - data
            - meta
        - com.vendor.root.component1.subcomponent1
            - data
            - meta
        - com.vendor.root.component2
            - data
            - meta
    

    对于简单的软件,可能只有一个模块,对应一个文件夹。
    每个子文件夹下都有两个文件夹data和meta,前者包含了所有软件的数据,包括可执行文件、链接库文件、配置文件等等,将所有这些文件压缩成.7z压缩包后,放入此文件夹;后者包含了至少3个文件,installscript.qs、license.txt、package.xml,分别用于描述安装行为、许可信息、模块或软件的描述(用于选择模块的页面上),其中license.txt文件名可变,只需要在脚本中做相应修改即可。

    2、config.xml

    config/config.xml定义了安装程序的行为。
    例子如下:

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

    其中各个标签的含义如下:

    • < Name> 软件名称
    • < Version> 版本号
    • < Title> 安装程序窗口标题
    • < Publisher> 发布者名称
    • < StartMenuDir> 要生成的windows开始菜单目录
    • < TargetDir> 默认安装路径

    config.xml支持的标签很多,不过多数都是可选的,只有上述这些是必须的。请参考官方文档,根据需要添加标签。

    3、data

    data文件夹下包含了你要发布的软件的全部数据文件,包括可执行文件、链接库文件、数据库、配置文件等等。将所有文件用.7z格式打包后,放在data文件夹下即可。

    4、meta/installscript.qs

    installscript.qs的语言类似于javascript,用于定义安装软件包的行为(如果软件有多个组件,每个分别配置),例如是否默认选中、是否生成开始菜单快捷方式、是否生成桌面快捷方式、是否有额外的安装步骤需要添加到常规步骤中。具体说明请参考examples中的例子以及官方文档。

    5、meta/license.txt

    将软件有关的许可信息,写在此文件中,会在安装过程中显示并要求用户同意。
    文件名称可以修改,不过修改过后要修改package.xml中对应的脚本。

    6、meta/package.xml

    meta/package.xml定义了安装包在处理此部件时要显示的信息。
    例子如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <Package>
        <DisplayName>The main component</DisplayName>
        <Description>the main component of your app</Description>
        <Version>1.0.0-1</Version>
        <ReleaseDate>2016-06-01</ReleaseDate>
        <Name>com.vendor.product</Name>
        <Licenses>
            <License name="Your App Agreement" file="license.txt" />
        </Licenses>
        <Default>script</Default>
        <Script>installscript.qs</Script>
        <UserInterfaces>
            <UserInterface>page.ui</UserInterface>
        </UserInterfaces>
    </Package>
    

    其中各个标签的含义如下:

    • < DisplayName> 显示的名称
    • < Description> 描述
    • < Version> 部件的版本号
    • < ReleaseDate> 发行日期
    • < Name> 部件名称(与文件夹名一致)
    • < Licenses> 许可信息名称以及许可文件名
    • < Script> 脚本文件
    • < UserInterfaces> 额外的界面(如果需要的话,而且需要去installscript.qs中配置)

    同样地,支持的标签很多,不过多数都是可选的,上述这些也不一定是必须的。请参考官方文档,根据需要添加标签。

    制作安装包

    完成上述准备工作后,使用binarycreator.exe工具生成安装包。
    需要在命令行中操作。在开始菜单中搜索cmd,或按下win+r输入cmd回车,打开命令行。转到刚才准备好的目录中。
    例如:

    C:> D:
    D:> cd QtIFW2.0.3examplesyourapp
    D: ....ininarycreator.exe -c configconfig.xml -p packages YourInstaller.exe
    

    其中,路径一定要对,YourInstaller.exe是安装包文件名,换成你想要的名称即可。

  • 相关阅读:
    Python基础学习参考(四):条件与循环
    Python基础学习参考(三):内置函数
    Python基础学习参考(二):基本语法
    2011的最后一篇博文 写给我自己也写给你们
    前端开发面试题
    常用js操作:
    两个嵌套for循环执行顺序
    在寻找学习js的途中,又发现了好的东西!
    arcgis api for js初学
    解决为什么arcgis api for js的first map里不显示arcgis地图
  • 原文地址:https://www.cnblogs.com/xia-weiwen/p/6857333.html
Copyright © 2020-2023  润新知