赞
踩
Qt安装程序框架提供了一组工具和实用程序,只需创建安装程序一次,无需改动源码,即可将它们部署在所有支持桌面QT的平台。 安装程序将在运行它们的平台上具有原生外观和感觉,支持:Linux,Microsoft Windows和OS X.
Qt安装程序框架工具生成安装程序,其中包含一组在安装,更新或卸载过程中指导用户的页面。 您提供可安装的内容并指定有关它的信息,例如产品和安装程序的名称以及许可协议的文本。
您可以通过向预定义的页面添加窗口小部件或添加整个页面来为用户提供其他选项来自定义安装程序。 您可以创建脚本以向安装程序添加操作。
官方下载地址:http://download.qt.io/official_releases/qt-installer-framework/(根据平台下载即可)
installscript.qs官方文档链接:http://doc.qt.io/qtinstallerframework/scripting.html
这些示例说明如何使用组件脚本来定制安装程序。
示例 | 说明 |
---|---|
更改安装程序UI示例 Change Installer UI Example | 使用组件脚本修改安装程序UI |
组件错误示例 Component Error Example | 如果无法安装组件,请使用组件脚本停止安装 |
依赖性解决示例 Dependency Solving Example | 使用组件的package.xml文件来定义组件之间的依赖性和自动依赖性 |
动态页面安装程序示例 Dynamic Page Installer Example | 使用组件脚本和动态页来构建安装程序 |
修改提取安装程序示例 Modify Extract Installer Example | 在组件脚本中使用归档提取钩子来修改目标路径 |
在线安装程序示例 Online Installer Example | 使用repogen工具和配置文件设置在线安装程序 |
打开ReadMe示例 Open ReadMe Example | 使用组件脚本添加用于打开自述文件到最终安装程序页面的复选框 |
退出安装程序示例 Quit Installer Example | 使用组件脚本退出安装程序 |
注册文件扩展示例 Register File Extension Example | 使用组件脚本在Windows上注册文件扩展名 |
开始菜单快捷方式示例 Start Menu Shortcut Example | 使用组件脚本将条目添加到Windows“开始”菜单 |
系统信息示例 System Information Example | 在组件脚本中使用systemInfo API来检查操作系统版本和位数 |
翻译示例 Translation Example | 使用翻译本地化安装程序页面和许可证 |
配置文件定制安装程序的用户界面和行为。 该文件通常名为config.xml并位于config目录中。
最小配置文件由根元素和和元素组成。 其他元素都是可选的,且无顺序要求。
以下是典型的配置文件示例:
<?xml version="1.0"?> <Installer> <Name>Some Application</Name> <Version>1.0.0</Version> <Title>Some Application Setup</Title> <Publisher>发行公司</Publisher> <ProductUrl>http://www.your-fantastic-company.com</ProductUrl> <InstallerWindowIcon>installericon</InstallerWindowIcon> <InstallerApplicationIcon>installericon</InstallerApplicationIcon> <Logo>logo.png</Logo> <Watermark>watermark.png</Watermark> <RunProgram>@TargetDir@/YourAppToRun</RunProgram> <RunProgramArguments> <Argument>Argument 1</Argument> <Argument>Argument 2</Argument> </RunProgramArguments> <RunProgramDescription>程序描述文本</RunProgramDescription> <StartMenuDir>Some Application Entry Dir</StartMenuDir> <MaintenanceToolName>SDKMaintenanceTool</MaintenanceToolName> <AllowNonAsciiCharacters>true</AllowNonAsciiCharacters> <Background>background.png</Background> <TargetDir>@HomeDir@/testinstall</TargetDir> <AdminTargetDir>@RootDir@/testinstall</AdminTargetDir> <RemoteRepositories> <Repository> <Url>http://www.your-repo-location/packages/</Url> </Repository> </RemoteRepositories> </Installer>
节点介绍:
元素 | 是否必需 | 描述 |
---|---|---|
Name | 必需 | 正在安装的产品名称 |
Version | 必需 | 安装软件的版本,格式要求:[0-9]+((. |
Title | 可选 | 标题栏上显示的安装程序的名称 |
Publisher | 可选 | 软件发行商(如Windows控制面板中所示) |
ProductUrl | 可选 | 指向包含您网站上产品信息的网页的网址 |
Icon | 可选 | 自定义安装程序图标的文件名。通过附加’.icns’(OS X),’.ico’(Windows)或’.png’(Unix)后缀来查找实际文件。 已弃用 ,请改用或 |
InstallerApplicationIcon | 可选 | 自定义安装程序图标的文件名。 通过附加’.icns’(OS X),’.ico’(Windows)后缀来查找实际文件。 在Unix上没有此功能 |
InstallerWindowIcon | 可选 | 安装程序应用程序的自定义窗口图标的文件名(PNG格式) |
Logo | 可选 | 用作QWizard::LogoPixmap的徽标的文件名 |
Watermark | 可选 | 用作QWizard::WatermarkPixmap的水印的文件名 |
Banner | 可选 | 用作QWizard::BannerPixmap(横幅)的文件名(仅由ModernStyle使用) |
Background | 可选 | 用作QWizard::BackgroundPixmap的图像的文件名(仅由MacStyle使用) |
WizardStyle | 可选 | 设置要使用的向导样式 (“Modern”(现代), “Mac”, “Aero"或"Classic”(经典)) |
WizardDefaultWidth | 可选 | 像素单位的默认向导(Wizard)宽度,设置的横幅图像(Banner Image)将覆盖在此 |
WizardDefaultHeight | 可选 | 以像素为单位设置向导的默认高度,设置水印图像将覆盖在此 |
TitleColor | 可选 | 设置标题和字幕的颜色(采用HTML颜色代码,例如“#88FF33”) |
RunProgram | 可选 | 如果用户接受操作,则在安装程序完成后执行命令。要提供应用程序的完整路径 |
RunProgramArguments | 可选 | 传递给中指定的程序的参数。您可以添加多个子元素,每个子元素为指定一个参数 |
RunProgramDescription | 可选 | 安装后运行程序的复选框旁边显示的文本。如果设置,但没有提供说明,用户界面将显示运行程序替代 |
StartMenuDir | 可选 | Windows开始菜单中产品的默认程序组名称 |
TargetDir | 可选 | 安装的默认目标目录。在Linux上,这通常是用户的主目录(/home/username/) |
AdminTargetDir | 可选 | 具有管理员权限的安装的默认目标目录。仅在Linux上可用,通常不建议在管理员用户的主目录中安装 |
RemoteRepositories | 可选 | 远程存储库列表。此元素可以包含多个子元素,每个子元素包含指定用于访问存储库的URL的子元素。有关更多信息,请参阅配置存储库 |
MaintenanceToolName | 可选 | 生成的维护工具的文件名。默认为maintenancetool。将附加平台特定的可执行文件扩展名 |
MaintenanceToolIniFile | 可选 | 用于生成维护工具配置的文件名。默认为MaintenanceToolName.ini |
RemoveTargetDir | 可选 | 如果卸载时不删除目标目录(TargetDir),请设置为false |
AllowNonAsciiCharacters | 可选 | 如果安装路径可以包含 非ASCII字符 ,请设置为true |
RepositorySettingsPageVisible | 可选 | 设置为false来 隐藏 设置对话框中的 存储库设置页面 |
AllowSpaceInPath | 可选 | 如果安装路径 不能包含空格字符 ,请设置为false |
DependsOnLocalInstallerBinary | 可选 | 如果要禁止从外部资源(如网络驱动器)安装,请设置为true。 这可能有意义,例如,安装程序非常大。该选项仅在Windows上使用 |
TargetConfigurationFile | 可选 | 目标的配置文件名。默认是components.xml |
Translations | 可选 | 用于翻译用户界面的语言代码列表。要添加多个语言变体,请指定多个子元素,每个元素指定语言变体的名称。该项可选。有关详细信息,请参阅翻译页 |
UrlQueryString | 可选 | 此字符串必须采用key = value形式,并且将附加到存档下载请求。这可以用于向托管存储库的web服务器传输信息 |
ControlScript | 可选 | 自定义安装程序控制脚本的文件名。请参阅控制脚本 |
CreateLocalRepository | 可选 | 如果要在安装目录中 创建本地存储库 ,请设置为true。此选项对在线安装程序没有影响。存储库将自动添加到默认存储库列表 |
安装程序包含嵌入到安装程序或从远程存储库加载的组件。在这两种情况下,你需要提供组件使用的文件格式和结构,以便安装程序读取。
包目录结构 Package Directory Structure
将所有组件放在同一根目录中,这称为包目录。目录名称用作 域标识符 ,其标识所有组件。例如 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 Directory
meta目录包含指定部署和安装过程设置的文件。安装程序不会提取文件(这些文件不会嵌入到安装程序中)。该目录必须至少包含程序 包信息文件 和您在程序包信息文件中所有 引用的文件 ,例如脚本,用户界面文件和翻译。
包信息文件语法 Package Information File Syntax
package.xml文件是关于组件信息的主要来源。
以下是package文件的示例:
<?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 | 必需 | 组件的可读名称 |
Description | 必需 | 组件的可读描述 将描述的翻译指定为附加说明标记的值,并将xml:lang属性设置为正确的语言环境 如果找不到与语言环境匹配的翻译文件,且存在未翻译的版本,则使用未翻译版本.否则,将不显示该描述 |
Version | 必需 | 组件的版本号格式为:[0-9]+((\.|-)[0-9]+)* 如1-1 ; 1.2-2 ; 3.4.7 如果包需要显示来自子进程的版本号,而不是它自己的版本号(由于子包的分组),可以指定属性 inheritVersionFrom ,包含版本需要继承的包名 |
ReleaseDate | 必需 | 此组件版本发布的日期 |
Name | 必需 | 此组件的域标识 |
Dependencies | 可选 | 此组件依赖的组件的标识符列表(使用逗号分割) 您可以指定版本号,以破折号(-)分隔 您可以使用比较运算符 (=, >, <, >= or <=) 为版本号添加前缀请记住,您必须使用字符引用&lt;来避开左尖括号(使用<来插入<,使用&lt; =来插入<=) 更多相关信息,请参阅组件依赖关系 |
AutoDependOn | 可选 | 此组件具有自动依赖性的组件的标识符列表(逗号分隔) 当且仅当满足所有指定的依赖关系时,才安装组件 如果组件对其他组件有自动依赖性,则组件树中组件旁的复选框将隐藏,并自动进行选择 如果组件以前未安装,则只有当选择此列表中的所有组件进行安装时,才会选择安装组件 如果组件已安装,则当选择此列表中的 至少一个组件 进行卸载时,将选择卸载组件 有关更多信息,请参阅组件依赖关系 |
Virtual | 可选 | 设置为true可从安装程序中隐藏组件 请注意,在根组件上设置此选项不起作用 |
SortingPriority | 可选 | 组件在组件树中的优先级。 树从最高优先级到最低优先级排序,在顶部具有最高优先级 |
Licenses | 可选 | 安装用户接受的许可协议列表 要添加几个许可证,请添加几个子元素,每个子元素指定许可证名称和文件 如果有针对此组件列出的翻译,安装程序还将查找翻译的许可证 它们需要具有与原始许可证文件相同的名称,但是具有添加的区域设置标识符 例如:如果许可证文件被称为license.txt并且指定了德语翻译,且安装程序还包含一个license_de_de.txt文件(将在德语系统上安装时显示) |
Script | 可选 | 被加载的脚本文件名。有关详细信息,请参阅添加操作 |
UserInterfaces | 可选 | 要加载的页面列表 要添加多个页面,请添加多个子元素,每个子元素指定页面的文件名 有关详细信息,请参阅添加页面 |
Translations | 可选 | 要加载的翻译文件的列表 要添加多个语言变体,请指定多个子元素,每个子元素指定语言变体的文件名 有关详细信息,请参阅翻译页 |
UpdateText | 可选 | 如果这是一个更新组件,则将说明添加到组件描述中 |
Default | 可选 | 可以设置为true、false、脚本名 true:在安装程序中预先选中组件,此操作仅适用于没有可见子组件的组件 脚本名:在运行时解析执行脚本,计算出布尔值(boolean) 将脚本文件名称添加为此文件中 |
建立桌面图标示例代码:
/* 建立桌面图标 */
var exec = "Exec=" + "@TargetDir@/runTime.sh " + "\n"; /* 执行程序 */
var icon = "Icon=" + "@TargetDir@/***.png " + "\n"; /* 图标资源路径 */
var version = "Version=" + "1.5.0.0023 " + "\n" ; /* 版本号 */
var name = "Name=" + "***" + "\n"; /* 桌面图标显示名称 */
var desktop = "@HomeDir@/Desktop/" + "***" + ".desktop"; /* 桌面图标名 */
var comment = name + exec + icon + version + "Terminal=false\nEncoding=UTF-8\nType=Application\n";
component.addOperation("CreateDesktopEntry", desktop , comment);
**上面一段代码的作用是创建Linux下桌面快捷方式,*部分替换成你的资源
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。