Qt Installer Framework翻译(5-4)
自定义安装程序
您可以使用脚本通过以下方式来自定义安装程序:
> 添加Qt Installer Framework操作,该操作由脚本提供,并由安装程序执行。
> 添加新页面,该页面由您在package.xml文件中指定,并将其放置在packages文件夹中。
> 修改现有页面,通过插入自定义用户界面元素来作为子部件。
> 添加语言变体。
您可以同时使用组件脚本和控制脚本来自定义安装程序。通过在组件的package.xml文件的Script元素中指定组件脚本,可以将该脚本与特定的组件关联起来。当组件的元数据获取完毕时,将加载该脚本。有关组件脚本的更多信息,请参见组件脚本章节。
通过在安装程序的control.xml文件的ControlScript元素中指定控制脚本,可以将该脚本与整个安装程序关联起来。控制脚本可以是安装程序资源的一部分,也可以在命令行中被传递。它们可用于修改安装程序页面,该页面在加载组件之前向用户显示。另外,您可以使用它们来修改卸载程序中的页面。有关更多信息,请参见控制脚本章节。
有关可用于组件/控制脚本的全局JavaScript对象的更多信息,请参见脚本API章节。
添加操作
您可以在安装过程中使用组件脚本执行Qt Installer Framework操作。通常,操作通过移动,复制或修补方式来操纵文件。使用QInstaller::Component::addOperation或QInstaller::Component::addElevatedOperation函数来添加操作。有关更多信息,请参见向组件添加操作章节。
另外,您可以通过派生KDUpdater::UpdateOperation来重新实现方法函数,用于在安装程序中注册自定义安装操作。有关更多信息,请参见注册自定义操作章节。
有关可用操作的总结,请参见操作章节。
添加页面
一个组件可以包含一个或多个用户界面文件,这些文件由组件或控制脚本放置在安装程序中。安装程序自动加载package.xml文件中UserInterfaces元素列出的所有用户界面文件。
使用组件脚本添加页面
要向安装程序添加新页面,请使用installer::addWizardPage()方法,并指定新页面的位置。例如,以下代码在安装准备页面中添加了MyPage实例:
installer.addWizardPage(component,"MyPage",QInstaller.ReadyForInstallation);
您可以使用组件脚本来访问已加载的窗口子部件,方法是通过该部件的类名来调用component::userInterface()方法,如以下代码片段所示:
component.userInterface( "MyPage" ).checkbox.checked = true;
您还可以为添加的页面提供回调函数。要访问它,请使用在UI文件中设置的对象名称(例如,“ MyPage”)。然后创建Dynamic${ObjectName}Callback函数(例如,DynamicMyPageCallback):
Component.prototype.DynamicMyPageCallback = function()
{
var page = gui.pageWidgetByObjectName("DynamicMyPage");
page.myButton.click,
page.myWidget.subWidget.setText("hello")
}
您可以使用在UI文件中设置的对象名称来访问窗口子部件。例如,上面代码中的myButton和myWidget就是子部件对象名称。
添加子部件
您可以使用组件或控制脚本,来将自定义用户界面元素,作为单个窗口子部件(例如复选框)插入到安装程序中。
要插入单个子部件,请使用installer::addWizardPageItem方法。例如,以下代码片段通过脚本,将MyWidget的实例添加到组件选择页面:
installer.addWizardPageItem(component,"MyWidget",QInstaller.ComponentSelection);
与安装程序进行功能性交互
例如,您可以使用控制脚本在测试中自动执行安装程序功能函数。以下代码段说明了如何在目标文件夹选择页面上自动点击“下一步”按钮:
Controller.prototype.TargetDirectoryPageCallback = function()
{
gui.clickButton(buttons.NextButton);
}
翻译页面
安装程序使用Qt翻译系统,来将用户可读的输出翻译成多种语言。要提供组件脚本和用户界面中包含的字符串的本地化版本,请创建QTranslator文件,安装系统会在加载组件时一起加载该文件。安装程序将加载与当前系统区域匹配的翻译文件。例如,如果系统区域设置为德语,则将加载de.qm文件。另外,如果存在本地化的license_de.txt,那么会显示该文件,而不是默认的license.txt。
需要将翻译添加到package.xml文件中,才能激活组件的翻译:
<Translations>
<Translation>de.qm</Translation>
</Translations>
将qsTr()函数用于脚本内的文字文本。此外,您可以将Component.prototype.retranslateUi方法添加到脚本中。 当安装程序的语言更改时,翻译文件被加载后,将调用该方法。
用于翻译的上下文,是使用qsTr时脚本文件的基础名,或翻译用户界面时UI文件的类名称。例如,如果脚本为installscript.qs,则上下文将为installscript。
注意:翻译系统还可以用于自定义UI。例如,通过自定义英语版本,使用一个en.ts文件,来替换安装程序中的任意文本。
原创造福大家,共享改变世界
献出一片爱心,温暖作者心灵

Qt Installer Framework翻译(5-4)的更多相关文章
- 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交互.例如,这允许 ...
随机推荐
- react + webpack 多页面搭建
一.利用 creat-react-app 新建一个react单页面应用. cnpm i -g create-react-app create-react-app demo cd demo npm st ...
- Loj2604开车旅行
Loj2604开车旅行 我完全没有看出这道题哪里是DP 首先,一个位置向后的最近和第二近我们可以通过set去简单实现 通过维护最大和次大即可 至于高度相同的情况我们可以通过先在set中查询小的来实现 ...
- 洛谷——P1540机器翻译(队列操作)
#include<bits/stdc++.h> using namespace std; int main(){ queue<int> num;//存放的内存 ]; int m ...
- Java 高效代码50例
导读 世界上只有两种物质:高效率和低效率:世界上只有两种人:高效率的人和低效率的人.----萧伯纳 常量&变量 直接赋值常量,禁止声明新对象 直接赋值常量值,只是创建了一个对象引用,而这个对象 ...
- 深入ReentrantLock的实现原理和源码分析
ReentrantLock是Java并发包中提供的一个可重入的互斥锁.ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性.只不过相比原生的Sync ...
- GNE: 4行代码实现新闻类网站通用爬虫
GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容.标题.作者.发布时间.正文中的图片地址和正文所在的标签源代码.GNE在提 ...
- 第一次看CCControl
Control中有九种可能的事件,定义在.h文件中,另外还定义四种状态,用来表示控件高亮等. 在初始化控件的时候: bool Control::init() { if (Layer::init()) ...
- vc++ 监控指定路径下文件变化
参考MSDN文档 https://docs.microsoft.com/zh-cn/windows/desktop/api/winbase/nf-winbase-readdirectorychange ...
- $loj530\ [LibreOJ\ \beta\ Round \#5]$ 最小倍数 数论
正解:数论 解题报告: 传送门$QwQ$! 不想做题,来水点儿简单点的$QwQ$. 一个显然的点在于可以直接对不同质因子分别算$n_{min}$最后取$max$. 这个正确性还是蛮显然的?因为只要有$ ...
- 一文详解滑动平均法、滑动平均模型法(Moving average,MA)
任何关于算法.编程.AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI.算法.编程和大数据知识分享,以及免费的SSR节点和 ...