Qt Installer Framework翻译(5-2)
创建在线安装程序
联机安装程序获取二进制安装文件中的内容以及存储库描述(Updates.xml)。请创建一个存储库,并将其上传到Web服务器。然后在用于创建安装程序的config.xml文件中指定存储库的位置。
创建存储库
使用repogen工具创建一个package文件夹中所有包的在线存储库:
repogen.exe -p <package_directory> <repository_directory>
例如,要创建仅包含org.qt-project.sdk.qt和org.qt-project.sdk.qtcreator的存储库,请输入以下命令:
repogen.exe -p packages -i org.qt-project.sdk.qt,org.qt-project.sdk.qtcreator repository
存储库创建后,将其上传到Web服务器。您必须在安装程序配置文件中指定存储库的位置。
配置存储库
安装程序配置文件(config.xml)中的<RemoteRepositories>元素可以包含多个存储库的列表。每个存储库都可以有以下设置:
<Url>,它指向可用组件的列表。
<Enabled>,值为0表示禁用此存储库。
<Username>,受保护存储库上使用的用户名。
<Password>,受保护存储库上使用的密码。
<DisplayName>,可选项,使用字符串来代替URL。
URL需要指向列出可用组件的Updates.xml文件。例如:
<RemoteRepositories>
<Repository>
<Url>http://www.example.com/packages</Url>
<Enabled>1</Enabled>
<Username>user</Username>
<Password>password</Password>
<DisplayName>Example repository</DisplayName>
</Repository>
</RemoteRepositories>
仅当安装程序可以访问存储库时,才能正常工作。如果在安装后访问存储库,则维护工具将拒绝安装。但是,仍然可以卸载。默认情况下,可以启用或禁用存储库。对于需要身份验证的存储库,也可以在此处设置详细信息,尽管不建议在此处输入密码,因为它以明文形式保存。如果此处不设置身份验证用的信息,那么会在运行时以对话框的形式要求输入。用户可以在运行时解决这些设置。
配置存储库类别
安装程序配置文件(config.xml)中的元素可以包含多个元素的列表。 元素内的每个元素都被视为一个类别。每个类别都可以具有,,元素和一些元素。存储库类别显示在组件选择页面的左侧,作为一个组件组件选择部件:

默认情况下,组件选择部件中仅显示没有类别的存储库。检查一个或几个存储库,并点击Fetch按钮,将更新部件,以显示来自所选类别存储库的内容。存储库类别中的组件被标记为不稳定(unstable),这意味着您可以安装其他组件,尽管某些组件缺少依赖项,或者脚本错误等。有关不稳定组件的更多信息,请参阅配置文件元素总结章节。
创建存储库类别的示例:
<RepositoryCategories>
<RemoteRepositories>
<Displayname>Category 1</Displayname>
<Preselected>true</Preselected>
<Tooltip>Tooltip for category 1</Tooltip>
<Repository>
<Url>http://www.example.com/packages</Url>
<Enabled>1</Enabled>
<Username>user</Username>
<Password>password</Password>
<DisplayName>Example repository</DisplayName>
</Repository>
</RemoteRepositories>
</RepositoryCategories>
创建安装程序二进制文件
要使用binarycreator工具创建在线安装程序,请输入以下命令:
<location-of-ifw>\binarycreator.exe -t <location-of-ifw>\installerbase.exe -p <package_directory> -c <config_directory>\<config_file> -e <packages> <installer_name>
例如,输入以下命令以创建名为SDKInstaller.exe的安装程序二进制文件,该文件将不包含org.qt-project.sdk.qt和org.qt-project.qtcreator,因为这些包是从远程存储库下载的:
binarycreator.exe -p installer-packages -c installer-config\config.xml -e org.qt-project.sdk.qt,org.qt-project.qtcreator SDKInstaller.exe
减少安装程序大小
即使是从Web服务器获取组件,默认情况下,binarycreator也将它们添加到安装程序二进制文件中。但是,当安装程序检查Web服务器上的更新时,如果没有新版本可用,则用户无需下载。
或者,您可以创建一个不包含任何数据的在线安装程序,全部从Web服务器获取。使用binarycreator工具的-n参数,则仅添加根组件。通常根组件为空,因此仅添加根的XML描述。
有关所拥有选项的更多信息,请参见binarycreator参数总结章节。
原创造福大家,共享改变世界
献出一片爱心,温暖作者心灵

Qt Installer Framework翻译(5-2)的更多相关文章
- Qt Installer Framework翻译(5-4)
自定义安装程序 您可以使用脚本通过以下方式来自定义安装程序: > 添加Qt Installer Framework操作,该操作由脚本提供,并由安装程序执行. > 添加新页面,该页面由您在p ...
- Qt Installer Framework翻译(7-6)
工具 Qt Installer Framework包含以下工具: > installerbase > binarycreator > repogen > archivegen ...
- Qt Installer Framework翻译(3-1)
初始化安装 下图说明了安装应用程序的默认工作流程: 本节使用在macOS上运行的Your Application Installer示例来说明默认工作流程.安装程序具有本地化外观,并可感知每个受支持的 ...
- Qt Installer Framework翻译(1)
IFW概览 Qt Installer Framework 提供了一组工具和程序来创建安装程序,并在不重写源代码的情况下将它们部署到所有受支持的桌面 Qt 平台上.安装程序具有本地化外观,并且可以感知运 ...
- Qt Installer Framework翻译(4)
教程:创建安装程序 本教程描述如何为一个小项目创建一个简单的安装程序: 本节描述创建安装程序所必须完成的步骤: 创建一个包文件夹,其中将包含所有配置文件和可安装的包. 创建一个配置文件,其中包含有关如 ...
- Qt Installer Framework翻译(7-4)
组件脚本 对于每个组件,您可以指定一个脚本,来准备要由安装程序执行的操作.脚本格式必须与QJSEngine兼容. 构造 脚本必须包含安装程序在加载脚本时创建的Component对象. 因此,脚本必须至 ...
- Qt Installer Framework翻译(7-8)
C++ API C ++ API文档是为开发Qt Installer Framework的开发人员编写的. 它描述了内部API,因此没有兼容性保证. 此外,该文档尚在开发中,因此缺少部分内容,而其他部 ...
- Qt Installer Framework翻译(0)
本人主攻C++和Qt. 以前一直看人家的博客,找资料学习.今天我也终于开博客啦. 最近在研究Qt install framework(IFW)应用程序安装框架. google也没发现有正儿八经的官方文 ...
- Qt Installer Framework翻译(7-2)
包文件夹 安装程序包含的组件,要么是内嵌的,要么可以从远程存储库加载.在这两种情况下,都需要为组件使用一种安装程序可以读取的文件格式和结构. 包文件夹结构 将所有组件放在相同的根文件夹中,即包文件夹. ...
- Qt Installer Framework翻译(7-3)
控制脚本 对于每个安装程序,您可以指定一个控制脚本,用来与安装程序的部分UI或功能进行交互.控制脚本可以在向导中添加和删除页面,更改现有页面,进行附加检查以及通过模拟用户单击来与UI交互.例如,这允许 ...
随机推荐
- Linux内核 结构 struct urb
struct urb 结构中和 USB 设备驱动有关的成员是: struct usb_device *dev 指向这个 urb 要发送到的 struct usb_device 的指针. 这个变量必须被 ...
- LuoguP3066 逃跑的BarnRunning Away From…
LuoguP3066 先吐槽一下,这道题名字好长啊 一个非常明显的思路,利用倍增数组不断向上跳.直到数值大于\(L\),然后直接差分统计答案就好了. 这种ZROI也考过,不多赘述了. 我们来考虑主席树 ...
- vue中的computed和watch区别
在vue.js官方文档中看到computed和watch获取全名的一个例子: var var vm = new Vue({ el: '#demo', data: { firstName: 'Foo', ...
- springboot中redis做缓存时的配置
import com.google.common.collect.ImmutableMap;import org.slf4j.Logger;import org.slf4j.LoggerFactory ...
- Android一般什么情况下会导致内存泄漏
资料参考:https://blog.csdn.net/u011479990/article/details/78480091 内存泄漏的原因在于生命周期长的对象持有了生命周期短的对象的引用 内存泄漏形 ...
- c++ vector 的坑
一个空的vector执行pop_back操作会发生什么 由于之前看STL源码剖析的时候,发现所执行的操作如下: 只是简单的将末尾的finish迭代器减1后destroy.这让人产生一个疑问:假如这个v ...
- Hibernate管理Session
Hibernate自身提供了三种管理Session对象的方法 Session对象的生命周期与本地线程绑定 Session对象的生命周期与JTA事务绑定 Hibernate委托程序管理Session对象 ...
- Perl中的bless的理解
bless有两个参数:对象的引用.类的名称. 类的名称是一个字符串,代表了类的类型信息,这是理解bless的关键. 所谓bless就是把 类型信息 赋予 实例变量. [xywang@mnsdev13: ...
- 017 Ceph的集群管理_3
一.验证OSD 1.1 osd状态 运行状态有:up,in,out,down 正常状态的OSD为up且in 当OSD故障时,守护进程offline,在5分钟内,集群仍会将其标记为up和in,这是为了防 ...
- 接口自动化测试框架 -- reudom
reudom Automated testing framework based on requests and unittest interface. 基于 Unittest 和 Requests ...