使用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.3\examples\yourapp
D:\ ..\..\bin\binarycreator.exe -c config\config.xml -p packages YourInstaller.exe
其中,路径一定要对,YourInstaller.exe是安装包文件名,换成你想要的名称即可。
使用Qt Installer Framework制作软件安装包的更多相关文章
- 使用Qt installer framework制作安装包
一.介绍 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布.这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执行文件中.其优势是简单单一,所有的依赖库都集中在一起,其缺点也很 ...
- 使用Qt installer framework制作安装包(不知道是否适合Mac和Linux?)
一.介绍 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布.这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执行文件中.其优势是简单单一,所有的依赖库都集中在一起,其缺点也很 ...
- 使用Inno Setup 制作软件安装包详细教程(与开发语言无关)
前言:关于如何制作一个软件安装包的教程,与编程语言无关.以下,请看详情~ 1.下载Inno Setup,下载地址:https://jrsoftware.org/isinfo.php 2.下载最新版本即 ...
- Windows下制作软件安装包
一.下载 首先,下载SetupFactory9.0.3.0Trial(下载链接:https://www.haolizi.net/example/view_65380.html) 下载好会有一个压缩包 ...
- 利用VS2017制作软件安装包与卸载程序
本博客讲述如何利用VS2017制作安装包以及相应的卸载程序,并解决过程中可能遇到的问题 一.制作安装程序 1.打开VS2017,新建项目,选择如下图所示程序: 新建成功后,会出现如下图所示目录: 2. ...
- Qt Installer Framework 使用说明(一)
目录 Qt Installer Framework 使用说明 1.Qt Installer Framework概述 选择安装包类型 促进更新 提供安装内容 2.入门指南 支持的平台 从源代码构建 支持 ...
- Inno Step软件安装包制作教程
Inno setup制作软件安装包教程 1,Inno Setup介绍 Inno Setup 是一个免费的安装制作软件,小巧.简便.精美是其最大特点,支持pascal脚本,能快速制作出标准Windows ...
- 快速创建软件安装包-ClickOnce
大家好,我是沙漠尽头的狼. .NET是免费,跨平台,开源,用于构建所有应用的开发人员平台. 今天介绍使用ClickOnce制作软件安装包,首先我们先了解什么是ClickOne. 1. 什么是Click ...
- C#进阶系列——使用Advanced Installer制作IIS安装包(二:配置安装包依赖项和自定义dll)
前言:上篇C#进阶系列——使用Advanced Installer制作IIS安装包(一:配置IIS和Web.config)介绍了下使用Advanced Installer配置IIS和Web.confi ...
随机推荐
- RK3288 双屏异显时,触摸屏(USB接口)无反应
系统版本:RK3288 android 5.1 设备同时有两个lcd,主屏是mipi接口,带有触摸屏,触摸屏是usb接口,副屏是hdmi接口,没有触摸屏,正常情况下,两个lcd显示相同内容,触摸屏一切 ...
- 求助OPC Opc.IDiscovery m_discovery = new OpcCom.ServerEnumerator();
各位大哥们,大家好,在此请教各位一个问题,谢谢大家.我在vs2010中引用了OpcNetApi.dll和OpcNetCom.dll并且加入了using Opc;using Opc.Da;using O ...
- 许多人问:FPGA是什么?
菇凉提问: 做FPGA开发多年,每次菇凉问我,什么是FPGA,我,我,我,不知道如何说起,难以回答. FPGA是一种器件.其英文名 feild programable gate array . 通俗来 ...
- python查找字符串 函数find() 用法
sStr1 = 'abcdefg' sStr2 = 'cde' print sStr1.find(sStr2) 输出 2意思是在sStr1字符里的第2位置找到了包含cde字符的字段
- 单例---被废弃的DCL双重检查加锁
被废弃的单例的DCL双重检查加锁/* *单例模式 *单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点. *加同步锁的单例模式,适合在多线程中使用. */ class Singleton{ ...
- 20181122_C#中AOP初探_装饰器模式的AOP_Remoting实现AOP_Castle实现AOP
一. 什么是AOP: a) AOP是面向切面编程; 就像oop一样, 它也是一种编程思想; i. Oop思想→一切皆对象, 对象交互组成功能, 功能叠加组成模块, 模块叠加组 ...
- Hibernate 一对一、一对多、多对多注解mappedBy属性的总结
mappedBy: 所填内容必为本类在另一方的字段名. 表示:本类放弃控制关联关系,所有对关联关系的控制,如:建立.解除与另一方的关系,都由对方控制,本类不管.举个例子: Teacher和Studen ...
- POJ1159解题心得
题目:http://poj.org/problem?id=1159 刚开始,从样例的特征去思考.总让我从回文数的角度去思考,想出几个方案,可都用了数据去检验,发现不行.如:ABCDDCB,BACDCA ...
- Java复习——枚举与注解
枚举 枚举就是让某些变量的取值只能是若干固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译阶段就控制程序的值,这一点是普通变量无法实现的.枚举是作为一种特殊的类存在的,使用的是enum关键字修 ...
- 下载pubmed数据
1 import requests 2 import json 3 4 search_url = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils ...