包目录
安装程序包含的组件要么是内嵌在安装程序中,要么从远程存储库中加载。在两种情况下,都需要使用安装程序可以读取的文件格式和结构来表示这些组件。
包目录结构
将所有组件放置在同一个根目录中,该目录称为包目录。目录名充当类似的域名标识符,用于标识所有组件。例如,com.vendor.root
。目录名不能包含:
或-
字符,因为它们保留用于从标识符中分隔版本号。
在根目录内,创建名为data
和meta
的子目录。
包目录可以如下所示
-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
元数据目录
meta
目录包含指定部署和安装过程设置的文件。这些文件不会被安装程序提取。目录必须包含至少一个包信息文件,以及包信息文件中引用的所有文件,例如脚本、用户界面文件和翻译。
包信息文件语法
包.xml文件是组件信息的来源。以下是一个包文件的示例
<?xml version="1.0"?> <Package> <DisplayName>QtGui</DisplayName> <Description>Qt gui libraries</Description> <Description xml:lang="de_de">Qt GUI Bibliotheken</Description> <Version>1.2.3</Version> <ReleaseDate>2009-04-23</ReleaseDate> <Name>com.vendor.root.component2</Name> <Dependencies>com.vendor.root.component1</Dependencies> <Virtual>false</Virtual> <Licenses> <License name="License Agreement" file="license.txt" /> </Licenses> <Script>installscript.qs</Script> <UserInterfaces> <UserInterface>specialpage.ui</UserInterface> <UserInterface>errorpage.ui</UserInterface> </UserInterfaces> <Translations> <Translation>sv_se.qm</Translation> <Translation>de_de.qm</Translation> </Translations> <DownloadableArchives>component2.7z, component2a.7z</DownloadableArchives> <AutoDependOn>com.vendor.root.component3</AutoDependOn> <SortingPriority>123</SortingPriority> <UpdateText>This changed compared to the last release</UpdateText> <Default>false</Default> <ForcedInstallation>false</ForcedInstallation> <ForcedUpdate>false</ForcedUpdate> <Essential>false</Essential> <Replaces>com.vendor.root.component2old</Replaces> <Operations> <Operation name="AppendFile"> <Argument>@TargetDir@/A.txt</Argument> <Argument>lorem ipsum</Argument> </Operation> <Operation name="Extract"> <Argument>@TargetDir@/Folder1</Argument> <Argument>content.7z</Argument> </Operation> <Operation name="Extract"> <Argument>@TargetDir@/Folder2</Argument> </Operation> </Operations> <TreeName moveChildren="true">com.vendor.subcomponent</TreeName> </Package>
包信息文件元素摘要
元素 | 描述 |
---|---|
DisplayName | 组件的易读名称。必需。指定组件名称的翻译作为额外的DisplayName标签的值,并通过设置xml:lang属性为正确的区域设置来指定。 |
描述 | 组件的易读描述。必需。可以类似地指定Date的翻译,类似于DisplayName标签。如果找不到匹配区域的本地化,并且存在未翻译的版本,则将使用该未翻译版本。否则,该区域将不会显示任何Description。可以在组件描述中包含用户可点击的外部链接,例如组件的首页,通过指定如下的URL地址:{external-link}='https://www.qt.io/'。URL必须有效,并且包含对所需资源的完整路径。 |
Version | 组件版本号,以下格式:[0-9]+((\.|-)[0-9]+)*,例如1-1;1.2-2;3.4.7。必需。如果包需要显示从子包中继承的版本号(而不是它自己的版本号)(因为子包的组合),则可以指定继承版本自属性inheritVersionFrom以及需要从其中继承版本号的包名。 |
ReleaseDate | 此组件版本发布日期。必需。 |
Name | 组件的类似域标识符。必需。 |
Dependencies | 该组件所依赖的组件标识符的逗号分隔列表。可选项,您可以通过破折号(-)指定版本号。您可以使用比较运算符(=, >, <, >= 或 <=)作为版本号的前缀。请注意,您必须使用字符引用 "<" 来转义左尖括号(使用 "<" 代替 "<",并使用 "<=" 代替 "<=")。可选。有关更多信息,请参阅组件依赖。 |
AutoDependOn | 该组件自动依赖的组件标识符的逗号分隔列表。只有当所有指定的依赖项都满足时,才会安装该组件。如果组件具有对其他组件的自动依赖,则组件树中不会显示与该组件相邻的复选框,但这不会改变更新器视图中复选框的可见性,因为最终用户仍然可以手动选择该组件进行更新。 在运行包管理器模式下的安装程序或维护工具时,选择将自动进行。如果组件之前未安装,只有在从这个列表中选择所有组件安装时,才会选择此组件进行安装。如果组件已经安装,当至少有一个列表中的组件也选择进行卸载或更新时,才会选择此组件进行卸载或更新。有关更多信息,请参阅组件依赖。 |
虚拟 | 设置为 true 以隐藏安装程序中的组件。这将隐藏该组件可能拥有的任何子组件,包括其子孙组件。注意,在根组件上设置此选项不起作用。 |
SortingPriority | 组件在树中的优先级。树是按从高到低的优先级排序的,最高优先级位于顶部。 |
许可协议 | 安装用户需要接受的许可证协议列表。要添加多个许可证,请添加多个包含 <License> 子元素的 <Licenses> 元素,每个子元素分别指定许可证的 name 和 file ,可选的 priority 。支持 ASCII 和 UTF8 文件格式作为许可证文件。如果此组件列出了翻译,则安装程序还会查找翻译的许可证。这些文件需要与原始许可证文件具有相同的名称,但需添加区域标识符。例如,如果许可证文件名为 license.txt,并且指定了德语翻译,则安装程序还会包含一个 license_de_de.txt 文件(并在德国系统上安装时显示它)。 |
脚本 | 将要加载的脚本的文件名。可选项。指定 postLoad="true" 属性将导致脚本仅加载到选定的更新或安装的组件中。具有该属性时,脚本在组件安装开始之前立即加载。如果有大量组件具有安装脚本存储库,这将加快安装程序。确保脚本中不包含需要显示安装树视图之前评估的任何内容。有关更多信息,请参阅添加操作 和 在组件脚本中使用 postLoad。 |
用户界面 | 要加载的页面列表。要添加多个页面,请添加多个包含 <UserInterface> 子元素的 <UserInterfaces> 元素,每个子元素分别指定页面的文件名。可选项。有关更多信息,请参阅添加页面。 |
翻译 | 要加载的翻译文件列表。为了添加多个语言变体,请指定多个具有文件名的 <Translation> 子元素,每个子元素指定一个语言变体的文件名。安装程序会加载与当前系统区域设置匹配的翻译文件。例如,如果系统区域设置为德语,则会加载 de.qm 文件。可选。有关更多信息,请参阅 翻译页面。 |
UpdateText | 如果这是组件的更新,则将其添加到组件描述中。可选。 |
默认值 | 可能的值有:true 、false 和 script 。将设置为 true 以在安装程序中预先选择组件。这仅在没有任何可見子组件的组件上有效。布尔值将被直接评估,而 script 则在运行时解析。在此文件中将 <Script> 元素的名称作为值添加。有关示例脚本,请参阅 选择默认内容。 |
基本 | 将包标记为基本,强制维护工具重启。如果基本组件有可用的更新,则软件包管理器将保持禁用,直到该组件被更新。新引入的基本组件在运行更新程序时将自动安装。 |
强制安装 | 确定包必须始终安装。最终用户无法在安装程序中取消选择它。在更新组件时,组件仍然可以从更新中取消选择。 |
强制更新 | 将软件包标记为 强制更新 以强制维护工具重启。如果 强制更新 组件有可用的更新,则软件包管理器将保持禁用,直到该组件被更新。 |
替换 | 以逗号分隔的组件列表,以替换。可选。 |
可下载的存档 | 列出在线安装程序要下载的数据文件(以逗号分隔)。如果组件内部有一些数据,且 package.xml 和/或脚本没有 DownloadableArchives 的值,则 repogen 工具将自动注册发现的数据。 |
需要管理员权限 | 如果该软件包需要使用提升的权限安装,则将其设置为 true 。可选。 |
可选勾选 | 如果您想隐藏项目的复选框,请将其设置为 false 。这在只想选择少数子组件而不是全部时很有用。在更新组件时,复选框仍然可见,以允许切换组件以更新。可选。 |
默认展开 | 如果要将该项默认展开,请将其设置为 true 。可选。 |
操作 | 当组件被安装时执行的操作列表。要添加多个操作,请指定多个具有操作 name 的 <Operation> 子元素。根据要运行的操作,Operation 可以有多个 <Argument> 子元素。添加 <Operations> 是定义操作的另一种方法,而不是在脚本中定义它们。有关更多信息,请参阅 添加操作。有关可用操作的摘要,请参阅 操作。 |
树名称 | 指定组件在安装树视图中位置。覆盖由组件名称计算出的原始位置。组件名称和树名称必须是唯一的。可选。 指定 安装树视图中一个组件分支可以有多个组件指定树名称。更改组件位置顺序是从叶组件到根组件。 |
组件依赖关系
组件可能依赖于一个或多个真实或虚拟组件。依赖关系通过使用组件标识符以及可选的组件版本定义。使用短横线(-)将版本号与标识符分开。
您可以在版本号前添加比较运算符(=、>、<、>= 或 <=)来指示包的版本号与所需版本进行比较,并必须等于、大于、小于、大于等于或小于等于指定的依赖版本。如果没有给出比较运算符,则默认为 =。
数据目录
data
目录包含安装程序在安装过程中提取的内容。数据必须打包成存档文件。这可以通过在创建安装程序或仓库时由 binarycreator 和 repogen 自动完成,或者您可以在之前先做此操作以获得更多控制。
对于手动创建存档,您可以使用附带的 Qt 安装程序框架中的 archivegen 工具,或者使用生成任何以下文件格式的其他工具:7z
、zip
、tar.gz
、tar.bz2
和 tar.xz
。
注意:如果安装程序框架工具在没有 libarchive 支持的情况下构建,则只支持 7z
格式。
©2021 The Qt Company Ltd. 本文件包含的文档贡献的版权归其各自所有者。本文件提供的文档是根据免费软件基金会发布的版权协议 GNU Free Documentation License 1.3 版本 许可的。Qt 公司、Qt 及其相应标志是芬兰以及/或世界各地的 Qt 公司的商标。所有其他商标都是其各自所有者的财产。