Qt 制作安装包

记录使用Qt工具制作一个安装包的过程

目录

1.准备工作

1.1检查Qt Installer Frameworks是否安装

1.2.安装Qt Installer Frameworks

1.3准备release出来的exe dll等文件

2.创建打包工程所需要的文件及目录

2.1创建子目录

2.2 创建工程文件

2.3 创建config/config.xml

2.4 创建packages/qWidget/meta/config.xml

2.5 创建packages/qWidget/meta/installscript.qs

2.6 创建packages/qWidget/meta/license.txt

3.拷贝需要打包的文件

4.使用Qt Creator编译生成安装程序

5. 安装、卸载、运行测试


1.准备工作

1.1检查Qt Installer Frameworks是否安装

Qt的安装路径下查找,比如D:\Qt\Tools\QtInstallerFramework 

不存在该目录就需要安装

1.2.安装Qt Installer Frameworks

找到D:\Qt\MaintenanceTool.exe,运行,选择QtInstallerFramework 安装

1.3准备release出来的exe dll等文件

如果生成release文件已经在这里

Qt 使用发布工具 windeployqt 来releaseicon-default.png?t=N7T8https://blog.csdn.net/castlooo/article/details/140473263

2.创建打包工程所需要的文件及目录

创建打包工程目录比如,用来构建打包工程所需要的目录结构

2.1创建子目录

InstallerExample/config  

InstallerExample/packages

InstallerExample/packages/qWidget

InstallerExample/packages/qWidget/data

InstallerExample/packages/qWidget/meta

2.2 创建工程文件

InstallerExample/qWidgetInstaller.pro

记事本编辑工程文件如下

TEMPLATE = aux
INSTALLER = qWidgetInstaller    #生成的安装文件名称  qWidgetInstaller.exe
INPUT = $$PWD/config/config.xml $$PWD/packages #$$PWD  pro所在的目录
demo.input = INPUT
demo.output = $$INSTALLER
demo.commands =binarycreator -c $$PWD/config/config.xml -p $$PWD/packages ${QMAKE_FILE_OUT}
demo.CONFIG += target_predeps no_link combine
QMAKE_EXTRA_COMPILERS += demo

2.3 创建config/config.xml

<?xml version="1.0" encoding="UTF-8"?>
<Installer>
	<Name>qWidget</Name>
	<Version>1.0.0</Version>
	<Title>qWidget Created by Qt 6</Title>
	<Publisher>CC</Publisher>
	<StartMenuDir>qWidget</StartMenuDir>
        <TargetDir>@HomeDir@/qWidget</TargetDir>
	<CreateLocalRepository>true</CreateLocalRepository>
	<WizardStyle>Aero</WizardStyle>
	<WizardShowPageList>true</WizardShowPageList>
	<WizardDefaultWidth>650</WizardDefaultWidth>
	<WizardDefaultHeight>430</WizardDefaultHeight>
</Installer>

2.4 创建packages/qWidget/meta/config.xml

<?xml version="1.0"?>
<Package>
<DisplayName>qWidget</DisplayName>
<Description>qWidget</Description>
<Version>1.0.0</Version>
<ReleaseDate>2024-07-17</ReleaseDate>
<Licenses>
<License name="GNU Public License Agreement" file="license.txt" />
</Licenses>
<ForcedInstallation>true</ForcedInstallation>
<Script>installscript.qs</Script>
</Package>

2.5 创建packages/qWidget/meta/installscript.qs

function Component()
{
    // default constructor
}

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

    if (systemInfo.productType === "windows") {
        component.addOperation("CreateShortcut", "@TargetDir@\\qWidgets.exe", "@StartMenuDir@\\qWidget.lnk",
            "workingDirectory=@TargetDir@");
		
        component.addOperation("CreateShortcut", "@TargetDir@\\qWidgets.exe", "@DesktopDir@\\qWidget.lnk",
            "workingDirectory=@TargetDir@");
    }
}

2.6 创建packages/qWidget/meta/license.txt

本软件采用Qt 6.7开源版本开发,遵循Qt开源版本使用的GPL v2/v3和LPGL v3等许可协议。本软件可以自由复制和分发,但需要遵守相应的开源许可协议。

3.拷贝需要打包的文件

将需要打包的release文件 exe dll等拷贝到目录packages/qWidget/meta

4.使用Qt Creator编译生成安装程序

使用Qt Creator打开工程qWidgetInstaller.pro,点击构建项目按钮,查看编译输出结果,编译的结果较为缓慢一些

5. 安装、卸载、运行测试

将生成的安装程序,安装、卸载、运行测试一遍是否问题

生成的桌面图标如下,点击运行正常

相关推荐

  1. ubuntu制作deb安装

    2024-07-19 08:10:01       42 阅读
  2. NSIS 安装windows 安装(包括QT和MFC)

    2024-07-19 08:10:01       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 08:10:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 08:10:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 08:10:01       58 阅读
  4. Python语言-面向对象

    2024-07-19 08:10:01       69 阅读

热门阅读

  1. Python 3 CGI编程

    2024-07-19 08:10:01       19 阅读
  2. 为什么 HashMap 的容量是 2 的整次幂?

    2024-07-19 08:10:01       16 阅读
  3. C++编程逻辑讲解step by step:利用文档类处理数据

    2024-07-19 08:10:01       20 阅读
  4. 【Oracle】Oracle中的LISTAGG函数

    2024-07-19 08:10:01       19 阅读
  5. new和malloc

    2024-07-19 08:10:01       22 阅读
  6. Redis 地理位置 GEO 模块

    2024-07-19 08:10:01       21 阅读
  7. 一文理解ThreadPoolExecutor线程池以及运行时间

    2024-07-19 08:10:01       20 阅读
  8. AccessibilityEvent常用事件

    2024-07-19 08:10:01       19 阅读
  9. vue3封装el-table及实现表头自定义筛选

    2024-07-19 08:10:01       19 阅读
  10. jEasyUI 显示海量数据

    2024-07-19 08:10:01       19 阅读
  11. 团队高效地使用 Git 进行协同开发

    2024-07-19 08:10:01       20 阅读