希望将自己的写的应用程序通过打包的方式发布出去,之前一直使用解压缩包的方式,这样的方式比较Low,然后就看到了Qt的官方打包架构,先来研究一下
Qt Installer Framework 提供了一些工具和组件,为Qt的桌面应用程序创建安装程序。
文章目录
- 1 Overview of Qt Installer Framework
- 2 Getting Started
- 3 End user Workflows
1 Overview of Qt Installer Framework
Qt Install Framework 提供了一个工具和组件的设置,来一次性创建安装程序,并且在不需要重写源代码的情况下在不同的桌面平台部署他们,安装程序有原生的外观,并且适应不同的运行平台如Liunx,Microsoft Windows,还有 macOS。
Qt Installer Framework tools通过一组页面来生成安装程序,这些页面引导用户从安装,升级,卸载的过程,你提供了安装的内容并指定了安装的信息,比如产品的名称,和他们的安装程序,还有许可信息文件。
你可以通过在之前定义的页面中添加页面,或者提供给用户附加的选项的方式来定制安装程序,你可以创建一些脚本在安装程序中添加操作。
1.1 Choosing Installer type
你可以提供给用户离线或者在线的安装程序,取决于你的使用情况
所有的安装方式都会安装一个维护工具,用来添加,升级,或者移除组件,离线的安装程序会包含所有的可安装的组件,并且在安装过程中不需要网络连接的功能。在线安装程序仅仅安装维护工具,然后从网络服务器中的仓库中下载和安装组件,因此,在线安装的二进制文件体积更小,而且它的下载时间也比离线安装的文件小,如果用户不需要安装所有的组件的话,在线下载和安装的时间也可能比离线安装的事件少。
在最初的安装之后,终端用户可以通过维护工具从服务器中添加附加的组件,比如收到自动的更新请求,用来和服务器中的组件相同。然而只有在维护工具中指定了服务器仓库的地址后,在离线安装的程序中才可以有这个功能。
创建离线的安装包的话,可以让用户先把文件下载到电脑因硬盘中,你可以把安装包放在光盘或者USB中。
创建在线的安装程序可以允许用户一直保持最新的应用程序二进制文件
1.2 Promoting Updates
提供在线存储库,以向安装您的产品的最终用户推广更新。提供更新的最简单方法是重新创建存储库并将其上载到web服务器。对于大型存储库,您只能更新更改后的组件。
1.3 Providing content for Installers
你可以使能其他的组件提供者,用来作为安装程序的附加组件,这个组件提供了主要的设置的仓库,包含内置的可安装的组件,并且为终端用户提供URL,终端用户一定在安装程序中配置此URL,这些附加的组件在安装包管理中是有效的。
2 Getting Started
Qt Installer Framework开发为Qt项目的一部分,此框架本身也是使用Qt的,然而,他可以被用来安装所有类型的应用程序,包括并不仅限于Qt
2.1 Supported Plotforms
你可以在下面的平台中使用Qt Installer Framework
- Windows
- Liunx
- OS X
2.2 Building form Sources
下面描述的步骤描述了如何创建你自己的Qt Installer Framework,如果你已经下载了预编译的版本的话,你可以跳过这个部分。
// 先跳过吧,已经下载了
3 End user Workflows
终端用户经历了一个类似于离线和在线的安装过程,沿着你的应用程序,安装程序安装了一个管理工具,其中包含一个安装包管理器,一个升级器,还有一个卸载器,终端用户可以使用这个管理工具添加,升级,和移除组件。管理工具包含一个额外的仓库来查找需要添加或者升级的组件,你可以在配置文件中指定这个仓库,或者用户可以在管理工具设置中指定
你可以支持下面部分
- Initial Installation
- Adding Components
- Remove Components
- Updating Components
- Specifying Settings
3.1 Initial Installation
下面的几张图片说明了默认的安装组件的流程
这些步骤使用 Your Application Installer example 运行在macOS来说明终端用户的默认的流程,安装程序在其所支持的平台中有原生的外观,这样他们在Liunx和WIndow中外观看起来不一样
这些范例文件放在examples\tutorial中,你可以使用binarycreator工具来创建 Your Application Installer.
3.1.1 Starting Installer
当用户开始安装程序后,介绍页面如下
你可以在 config.xml 配置文件中指定安装程序的名称安装产品的介绍
当用户选择Continues时,会打开选择安装路径的页面
3.1.2 Selecting Target Directory
终端用户必须指定安装的目标文件夹,你可以在config.xml文件中指定默认值
当终端用户选择Continue后,打开组件选择的页面。
如果路径中已经存在文件,将会显示提示页面
3.1.3 Selecting Components
组件选择页面列举了用于安装的组件列表,还有简短的每个组件的描述,终端用户可以选择安装的组件,也可以选择 Select All来选择所有的组件,选择Deselect All来放弃选择,或者Default选项来恢复到默认的选择上面。
你在安装包中的data目录中添加可以安装的组件,你通过meta 文件夹中的package.xml来指定安装的信息
你可以使用布尔操作符或脚本来指定哪些组件默认情况下是选择的
当用户点击Continue的时候,将会跳转到license检查界面
3.1.4 Accepting License Agreements
在许可检查页面中,终端用户必须接受许可的同意才可以继续安装
你可以在package.xml文件中指定一个许可文件,并且拷贝这个文件到meta目录中
3.1.5 Selecting Windows Program Group
在Windows中,开始菜单目录中的页面将会激活,终端用户可以选在产品在开始菜单中的项目组
可以在配置文件config.xml中指定项目组的默认值
当用户选择Next后,安装页面准备开始了
3.1.6 Installing Components
下面是安装准备页面,用户可以点击Install后开始安装
在安装过程中,将会显示安装进度,用户可恶意选择Show Details按钮来看更多的进度的细节
当安装完成后,安装结束页面将会打开
在这个页面中,你可以添加选项来开始安装的产品,在关闭安装程序后,你指定产品开始和显示的文本在配置文件config.xml中
3.2 Adding Components
如果用户在最初的安装中没有选择所有的组件,他们可以使用安装包管理器从仓库中安装保留的组件,安装包管理器是管理工具的一部分,可以在最初的安装过程中安装在一起,唯一需要做的工作是如果仓库中包含可用的组件,无论是在本地还是在外部。
下面的流程图介绍了默认的安装附加组件的流程
这个部分中使用通过Qt5 安装的挂你工具运行在macOS上,作为例子展示终端用户如何在最初的安装后添加新的组件,管理工具包含安装包管理,升级和卸载
3.2.1 Starting Package Manager
当用户打开管理工具的时候,介绍页面是这样的
当用户选择Package manager,并选择Continue后,组件选择页面被打开
3.2.2 Selecting Additional Complnents
组件选择页面列出了可以安装的组件,还有简短的组件的介绍,已经安装的组件在列表中标出来了,终端用户选择附加的组件来安装,他们可以选择Reset来再次显示当前已经安装的组件
点击Continue后,开始开始升级的页面
3.2.3 Installing Selected Components
当用户点击Update按钮后,前面选择的组件将开始安装
3.3 Removing Components
下面的流程图解释了默认的组件移除的流程,或者其他的安装的组件
3.3.1 Removing All Components
当用户开始管理工具后,下面的介绍页面将打开
终端用户可以选择移除所以的组件,然后点击Continue,来移除所有的安装的组件。
准备删除界面在用户点击Uninstall后将开始删除工作
3.3.2 移除选中的组件
3.4 Updating Components
3.5 Specifing Settings
4 Tutorial: Creating an Installer
下面的教程描述了如何为小项目创建简单的安装程序
下面的任务描述是创建安装程序锁必须的
- 创建一个安装包的目录,里面包含所有的配置文件,和可安装包
- 创建一个配置文件,包含如何建立安装程序的二进制文件和在线仓库
- 创建安装包信息文件,包含所有可安装组件的信息
- 创建安装文件的说明,并且将其复制到包目录下
- 使用binarycreator工具来创建安装程序
安装程序页面是通过使用你在配置文件和安装包信息文件中提供的信息所创建的。
示例文件在examples\tutorial文件中
4.1 Creating a Package Directory
创建一个目录结构,可以反映安装程序的意图,并且允许安装程序在将来填充,目录一定包含子目录config和packages
4.2 Creating a Configuration File
在目录 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>
这个配置文件指定了在介绍页面的下面的内容
- Title:标签中的内容指定了在标题栏中的文件的安装程序的名称(1)
- Name:标签中指定了应用程序的介绍文件,加载在介绍文件中(2)
下面的标签用来定制安装程序的表现
- Version:标签指定了应用程序的编号
- Publisher:标签指定了软件的发布者(在Windows Control Panel中显示)
- StartMenuDir:标签指定了默认程序组,放在开始菜单中
- TargetDir:单元指定了默认的安装地址其中有一些宏类型的文本可以指定地址
更多的有关于配置文件的信息,请看Configuration File
4.3 Creating a Package information File
在简单情况中,安装的句柄仅仅只有一个组件,名为com.vendor.product,为了提供给安装程序有关于组件的信息,创建一个名为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>
在示例文件中的标签的详细描述在下面
更详细的有关于package information 文件的信息,请看文档 Package Information File Syntax
4.3.1 Specifying Component Information
上面文本标签的的含义如下
- DispalyName:标签指定了在组件列表中组件的名称
- Description:标签指定了当组件被选中的时候的组件描述文字
4.3.2 Specifying installer Version
Version:标签使您可以在更新时为展示给用户
4.3.3 Adding Licenses
licenses:标签指定了包含许可文件的txt的名称,可以显示在许可区域检查中
4.3.4 Selecting Default Contents
Default标签指定了是否这个组件默认是被选择的,true设置此组件为选择,这个例子中,我们使用值script在运行的时候解析这个值,这是一个JavaScript文件,独立的文件,在Script标签中指定
4.4 Creating Installer Content
安装的内容储存在一个组件的data文件夹中,因为只有一个组件,所以将data放在packages/com.vendr.product/data文件夹中,这个例子已经包含了一个文件,用来测试,但是你可以放置主要的任何文件在这个文件夹中。
详细的关于打包的规则的选项,请看Data Directory文件夹
4.5 Creating the Installer Binary
现在可以创建二进制安装文件了,在命令行中切换到目录 examples\tutorial 中,然后输入下面的命令
..\..\bin\binarycreator.exe -c config\config.xml -p packages YourInstaller.exe