包文件夹
安装程序包含的组件,要么是内嵌的,要么可以从远程存储库加载。在这两种情况下,都需要为组件使用一种安装程序可以读取的文件格式和结构。
包文件夹结构
将所有组件放在相同的根文件夹中,即包文件夹。该文件夹的名称充当类似于域的标识符,用于标识所有组件。例如,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
元文件夹
元文件夹包含多个文件,用于指定部署和安装过程的设置。安装程序不提取这些文件。该文件夹必须至少包含一个包信息文件,以及您在包信息文件中引用到的所有文件,例如脚本,用户界面文件和翻译文件。
包信息文件语法
package.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>
<Essential>false</Essential>
<Replaces>com.vendor.root.component2old</Replaces>
</Package>
包信息文件元素总结
元素 | 描述 |
---|---|
DisplayName | 组件的可读名称。强制项。可将组件名称的翻译指定为DisplayName的附加标签,并将xml:lang属性设置为正确的语言环境。 |
Description | 组件的可读描述。强制项。可以参考DisplayName标签类似地指定翻译。如果找不到与语言环境匹配的本地化翻译,并且存在未翻译的版本,则将使用该版本。否则,将不会显示该语言环境的描述。用户可点击的外部链接,例如组件的主页,可以包括在组件描述中,通过指定如下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 | 逗号分隔的组件标识符列表,本组件自动依赖。仅当所有指定依赖满足时,才安装本组件。如果其中某个组件自动依赖于其他组件,则组件树中该组件旁边的复选框将不可见。复选框自动进行选择。如果以前未安装过本组件,则仅当列表中的所有组件都被选择安装时,才可选择安装本组件。 如果已经安装了本组件,当列表中选择了至少一个组件进行卸载时,则该组件也将被选择进行卸载。 有关更多信息,请参见组件依赖章节。 |
Virtual | 设置为true可以从安装程序中隐藏该组件。 请注意,在根组件上设置此功能无效。 |
SortingPriority | 树中组件的优先级。 该树从最高优先级到最低优先级排序,最高优先级在顶部。 |
Licenses | 用户将接受的许可协议列表。要添加多个许可证,请添加多个<License>子元素,每个都指定许可证名称和文件。 许可证文件支持ASCII和UTF8文件格式。 如果列出了此组件的翻译,安装程序还将查找翻译后的许可证。它们需要与原始许可证文件同名,但具有附加的语言环境标识符。例如,如果许可证文件名为license.txt,并指定了德语翻译,则安装程序还将包含license_de_de.txt文件(在德语系统上安装时显示)。 |
Script | 正在加载的脚本的文件名。可选项。有关更多信息,请参见添加操作章节。 |
UserInterfaces | 要加载的页面列表。 要添加多个页面,请添加多个<UserInterface>子元素,每个指定页面的文件名。 可选项。有关更多信息,请参见添加页面章节。 |
Translations | 要加载的翻译文件列表。 要添加多种语言变体,请指定多个<Translation>子元素,每个指定一种语言变体的文件名。可选项。有关更多信息,请参见翻译页面章节。 |
UpdateText | 描述,添加到组件描述中。如果这是对组件的更新。可选的。 |
Default | 可能的值为:true,false和script。设置为true,则预先选择安装程序中的组件。这仅对没有可见子组件的组件有效。 true和false会被直接评估,而script在运行时解析。 在此文件中,添加脚本名,作为<Script>元素的一个值。有关示例脚本,请参见选择默认内容章节。 |
Essential | 将包标记为必要的,用于强制重启MaintenanceTool。如果某个必要组件有可用的更新,则包管理器将保持禁用状态,直到该组件被更新为止。运行更新程序时,将自动安装新引入的必要组件。 |
ForcedInstallation | 确定必须始终安装该包。用户无法在安装程序中取消选择。 |
Replaces | 要替换的逗号分隔的组件列表。可选项。 |
DownloadableArchives | 列出供在线安装程序下载的数据文件(用逗号分隔)。如果组件内部有一些数据,并且package.xml和/或脚本没有DownloadableArchives值,则repogen工具会自动注册找到的数据。 |
RequiresAdminRights | 设置为true,如果需要使用提升的权限来安装包。可选项。 |
Checkable | 设置为false,如果要隐藏项目的复选框。当仅应选择几个子组件而不是全部时,这很有用。可选项。 |
ExpandedByDefault | 设置为true,如果要在树结构中默认扩展此项。可选项。 |
组件依赖
组件可以依赖一个或多个真实或者虚拟的组件。依赖通过组件标识或者可选的组件版本来定义。使用破折号(-)将版本号与标识符分开。
可以使用比较运算符(=,>,、<(<),>=或<=(<=))作为版本号的前缀,以指示包的版本号,并与所需版本进行比较,并且必须等于、大于、小于、大于等于依赖项的版本号。如果没有给出比较运算符,则默认为=。
数据文件夹
数据文件夹包含安装程序在安装过程中要提取的内容。您必须将数据打包为.7zip存档(.7z)。您可以使用Qt Installer框架随附的archivegen工具,也可以使用其他生成7zip存档的工具。