我们使用Qt官方提供的安装包制作框架qt-installer-framework来打包我们的应用程序,同时它支持三个平台:Windows,Linux,OS X。

功能强大,用起来也很方便,这里只介绍一下基本用法,完全能满足我们的要求。

qt-installer-framework下载地址:
http://download.qt.io/official_releases/qt-installer-framework/

文档地址:
https://doc.qt.io/qtinstallerframework/index.html

开始制作安装包吧,如我的项目名为Acc,注意下面所有文件都需要是utf-8编码,否则会有乱码。

准备主要目录结构

Acc
  config
    config.xml
  packages
    com.vendor.product
      data
        ...
      meta
        package.xml
        license.txt
        installscript.qs

创建config.xml文件

在config目录中创建config.xml文件,包含如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<Installer>
    <Name>Acc</Name>
    <Version>1.0.0</Version>
    <Title>Acc安装</Title>
    <Publisher>tujiaw</Publisher>
    <StartMenuDir>Acc</StartMenuDir>
    <TargetDir>@ApplicationsDir@/Acc</TargetDir>
</Installer>

Name:应用程序名字
Version:应用程序版本号
Title:出现在安装包的标题栏
Publisher:发布者,在控制面板卸载应用程序窗口会展示发布者
StartMenuDir:开始菜单中的目录名
TargetDir:默认安装目录

更多配置文件信息看这里:https://doc.qt.io/qtinstallerframework/ifw-globalconfig.html

创建package.xml文件

在简单的只有一个组件com.vendor.product的情况下,在packages->com.vendor.product->meta目录下创建package.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Package>
    <DisplayName>Acc</DisplayName>
    <Description>安装核心组件。</Description>
    <Version>0.1.0-1</Version>
    <ReleaseDate>2018-07-02</ReleaseDate>
    <Licenses>
        <License name="License Agreement" file="license.txt" />
    </Licenses>
    <Default>true</Default>
    <Script>installscript.qs</Script>
</Package>

DisplayName:显示当前组件的名字
Description:简单描述
Version:组件版本号
ReleaseDate:发布日期 Licenses:许可证
Default:默认勾选
Script:执行脚本,创建快捷方式

license.txt内容:

This software is licensed under the terms of the GNU General Public License version 3 (GPLv3).

installscript.qs内容:

function Component()
{
    // default constructor
}

Component.prototype.createOperations = function()
{
    // call default implementation to actually install README.txt!
    component.createOperations();

    if (systemInfo.productType === "windows") {
        component.addOperation("CreateShortcut", "@TargetDir@/Acc.exe", "@HomeDir@/Desktop/Acc.lnk");
        component.addOperation("CreateShortcut", "@TargetDir@/Acc.exe", "@StartMenuDir@/Acc.lnk");
    component.addOperation("CreateShortcut", "@TargetDir@/maintenancetool.exe", "@StartMenuDir@/更新或卸载.lnk");
    }
}

放置应用程序文件

将应用程序依赖的所有文件放到data目录下

打包

打开命令行工具cd到Acc所在目录,执行如下命令:

C:/Qt/QtIFW-3.0.4/bin/binarycreator.exe -c config/config.xml -p packages Acc.exe

执行成功后会在Acc目录生成Acc.exe安装包文件

注意上面的xml文件需要时utf-8编码 qt-installer-framework我的安装路径是:C:/Qt/QtIFW-3.0.4

目录结构:https://www.ningto.com/program/download/Acc.zip
制作后的安装包:https://www.ningto.com/program/download/Acc.exe