Qt Installer Framework翻译(7-3)

控制脚本

无弹窗小说网 https://m.amini.net

对于每个安装程序,您可以指定一个控制脚本,用来与安装程序的部分UI或功能进行交互。控制脚本可以在向导中添加和删除页面,更改现有页面,进行附加检查以及通过模拟用户单击来与UI交互。例如,这允许安装时无需人的参与。

脚本格式必须与QJSEngine兼容。

本节介绍为实现这种控制脚本而调用的函数功能。它还概述了安装程序页面以及每个页面上可用的小部件,例如按钮,单选按钮和行编辑。

编写控制脚本

最小的有效脚本至少需要包含一个构造函数,如下所示:

function Controller()
{
}

以下示例显示了一个更高级的脚本,该脚本使用gui JavaScript全局对象方法,用于在简介页面上设置新页面标题和欢迎消息,并在目标文件夹页面上自动单击下一步按钮:

function Controller()
{
}

Controller.prototype.IntroductionPageCallback = function()
{
    var widget = gui.currentPageWidget(); // get the current wizard page
    if (widget != null) {
        widget.title = "New title."; // set the page title
        widget.MessageLabel.setText("New Message."); // set the welcome text
    }
}

Controller.prototype.TargetDirectoryPageCallback = function()
{
    gui.clickButton(buttons.NextButton); // automatically click the Next button
}

有关可在控制脚本中使用的JavaScript全局对象的更多信息,请参见Scripting API章节。

预定义的安装程序页面

QInstaller JavaScript对象提供对以下预定义安装程序页面的访问:
> 介绍
> 目标文件夹
> 组件选择
> 许可证检查
> 开始菜单选择
> 准备安装
> 执行安装
> 安装完成
buttons JavaScript对象提供了一组可在安装程序页面上使用的按钮。

以下各节描述了可与安装程序页面交互的用户可实现函数,以及每个页面上可用的小部件。

简介页面

实现Controller.prototype.IntroductionPageCallback()函数,用来与简介页面上的部件进行交互。

向导按钮:
> 下一步按钮
> 取消按钮

部件简要描述
ErrorLabel显示错误信息
MessageLabel显示消息。默认显示"欢迎来到安装向导"消息。
InformationLabel显示进度信息。
单选按钮简要描述
PackageManagerRadioButton包管理器单选按钮,作为维护工具运行时,在页面上显示。
UpdaterRadioButton更新程序单选按钮,作为维护工具运行时,在页面上显示。
UninstallerRadioButton卸载程序单选按钮,作为维护工具运行时,在页面上显示。
进度条简要描述
InformationProgressBar进度条,获取远程包时显示。
Qt核心功能简要描述
packageManagerCoreTypeChanged()如果要在维护工具的类型更改时收到通知,请连接到此信号。
注意:仅当用户启动二进制文件,即所谓的维护工具(安装后),并在单选按钮之间切换时,才发出此信号。

示例代码:

function Controller()
{
    var widget = gui.pageById(QInstaller.Introduction); // get the introduction wizard page
    if (widget != null) 
        widget.packageManagerCoreTypeChanged.connect(onPackageManagerCoreTypeChanged); 
}

onPackageManagerCoreTypeChanged = function()
{
    console.log("Is Updater: " + installer.isUpdater());
    console.log("Is Uninstaller: " + installer.isUninstaller());
    console.log("Is Package Manager: " + installer.isPackageManager());
}

许可协议页面

实现Controller.prototype.LicenseAgreementPageCallback()函数,用来与许可协议页面上的部件进行交互。

向导按钮:
> 下一步按钮
> 取消按钮
> 返回按钮

部件简要描述
LicenseListWidget列出可用许可证
LicenseTextBrowser显示被选择许可证内容
AcceptLicenseLabel在接受许可证单选按钮旁边显示的文本
RejectLicenseLabel在拒绝许可证单选按钮旁边显示的文本
单选按钮简要描述
AcceptLicenseRadioButton接收许可协议
RejectLicenseRadioButton拒绝许可协议。默认选中。

目标文件夹页面

实现Controller.prototype.TargetDirectoryPageCallback()函数,用来与目标文件夹选择页面上的部件进行交互。

向导按钮:
> 下一步按钮
> 取消按钮
> 返回按钮

部件简要描述
MessageLabel显示消息
TargetDirectoryLineEdit显示安装目标文件夹值
WarningLabel显示警告

组件选择页面

实现Controller.prototype.ComponentSelectionPageCallback()函数,用来与组件选择页面上的部件进行交互。

向导按钮:
> 下一步按钮
> 取消按钮
> 返回按钮

方法简要描述
selectAll()尽可能选择所有可用包
deselectAll()尽可能反选所有可用包
selectDefault()将可用包的选择状态重置为初始状态
selectComponent(id)选择具有id(string)的包
deselectComponent(id)反选具有id(string)的包
按钮简要描述
SelectAllComponentsButton尽可能选择所有可用包
DeselectAllComponentsButton尽可能反选所有可用包
SelectDefaultComponentsButton将可用包的选择状态重置为初始状态
ResetComponentsButton重置为已安装组件状态
FetchCategoryButton从类别中获取组件
部件简要描述
CategoryGroupBox包含用于选择存储库类别的复选框

Installer Framework 3.1引入了存储库类别,作为一项新功能。 使用包含存储库类别的安装程序时,可以按其显示名称选择类别,获取其内容,然后选择包含的组件进行安装。

您可以从类别中获取组件,如下所示:

Controller.prototype.ComponentSelectionPageCallback = function()
{
    var page = gui.pageWidgetByObjectName("ComponentSelectionPage");

    // if CategoryGroupBox is visible, check one of the checkboxes
    // and click fetch button before selecting any components
    var groupBox = gui.findChild(page, "CategoryGroupBox");
    if (groupBox) {
        console.log("groupBox found");
        // findChild second argument is the display name of the checkbox
        var checkBox = gui.findChild(page, "Archive");
        if (checkBox) {
            console.log("checkBox found");
            console.log("checkBox name: " + checkBox.text);
            if (checkBox.checked == false) {
                checkBox.click();
                var fetchButton = gui.findChild(page, "FetchCategoryButton");
                if (fetchButton) {
                    console.log("fetchButton found");
                    fetchButton.click();
                } else {
                    console.log("fetchButton NOT found");
                }
            }
        } else {
            console.log("checkBox NOT found");
        }
    } else {
        console.log("groupBox NOT found");
    }
    // you can now select components from the fetched category
}

开始菜单文件夹页面

实现Controller.prototype.StartMenuDirectoryPageCallback()函数,用来与准备安装页面上的部件进行交互。

向导按钮:
> 下一步按钮
> 取消按钮
> 返回按钮

部件简要描述
StartMenuPathLineEdit显示用于创建程序快捷方式的文件夹。

准备安装页面

实现Controller.prototype.ReadyForInstallationPageCallback()函数,用来与准备安装页面上的部件进行交互。

向导按钮:
> 提交按钮
> 取消按钮
> 返回按钮

部件简要描述
MessageLabel显示消息。
TaskDetailsBrowser显示有关安装的一些更详细的信息

执行安装页面

实现Controller.prototype.PerformInstallationPageCallback()函数,用来与执行安装页面上的部件进行交互。

向导按钮:
> 提交按钮
> 取消按钮

完成页面

实现Controller.prototype.FinishedPageCallback()函数,用来与安装完成页面上的部件进行交互。

向导按钮:
> 提交按钮
> 取消按钮
> 完成按钮

部件简要描述
MessageLabel显示消息。
RunItCheckBox文本字段,通知用户可以在安装完成后启动应用程序。

自定义页面

自定义页面被注册为Dynamic${ObjectName},其中${ObjectName}是在UI文件中设置的对象名称。 因此,将调用Dynamic${ObjectName}Callback()函数。通过部件的对象名称(从UI文件)可以实现对部件的访问。

示例代码:

function Component()
{
    // add page with widget \c SomePageWidget before the target directory page
    installer.addWizardPage(component, "SomePageWidget", QInstaller.TargetDirectory)
}

Component.prototype.DynamicSomePageWidgetCallback = function()
{
    var page = gui.pageWidgetByObjectName("DynamicSomePageWidget");
    page.myButton.click, //direct child of the UI file's widget
    page.someFancyWidget.subWidget.setText("foobar") // nested widget
}

消息框

在执行安装程序时,例如,程序可能会显示一些有关发生错误的消息框。 在用户系统上运行程序时,这没问题,但这可能会破坏自动化测试套件。 为解决此问题,Qt Installer框架显示的所有消息框,均可通过特定标识符进行访问。

标识符可选值描述
OverwriteTargetDirectoryYes, No确认使用已有文件夹作为安装目标文件夹
installationErrorOK, Retry, Ignore执行安装时发生致命错误。
installationErrorWithRetryRetry, Ignore, Cancel执行安装时发生错误。 最终可以选择重试以再次运行。
AuthorizationErrorAbort, OK无法获取提升的权限。
OperationDoesNotExistErrorAbort, Ignore尝试执行操作时发生错误,但该操作不存在。
isAutoDependOnErrorOK调用包脚本时发生错误。 无法评估该包是否对其他包具有自动依赖性。
isDefaultErrorOK调用包脚本时发生错误。 无法评估该包是否默认安装。
DownloadErrorRetry, Cancel从远程存储库下载存档哈希时发生错误。 用户可以选择重试。
archiveDownloadErrorRetry, Cancel从远程存储库下载档案时发生错误。用户可以选择重试。
WriteErrorOK写入维护工具时发生错误。
ElevationErrorOK无法获取提升的权限。
unknownOK删除某些包时发生未知错误。
ErrorOK通用错误。
stopProcessesForUpdatesRetry, Ignore, Cancel更新包时发生错误。 必须先退出一些正在运行的应用程序或进程,然后才能执行更新。用户可以选择“重试”以在停止后在此运行。
Installer_Needs_To_Be_Local_ErrorOK安装程序是从网络位置启动的,但是不支持通过网络进行安装。
TargetDirectoryInUseNo安装的目标文件夹已经包含其他安装。
WrongTargetDirectoryOK安装的目标文件夹是文件或符号链接。
AlreadyRunningOK另一个应用程序实例已在运行。

示例代码:

function Controller()
{
    installer.autoRejectMessageBoxes;
    installer.setMessageBoxAutomaticAnswer("OverwriteTargetDirectory", QMessageBox.Yes);
    installer.setMessageBoxAutomaticAnswer("stopProcessesForUpdates", QMessageBox.Ignore);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt Installer Framework 是一个用于创建跨平台安装程序的工具。它是由 Qt 公司开发的,可用于构建 Windows、macOS 和 Linux 上的安装程序。Qt Installer Framework 允许开发者创建自定义的安装界面,支持包括自动更新和卸载在内的高级功能,使得应用程序的安装和升级变得更加方便。此外,Qt Installer Framework 还提供了强大的脚本语言和插件系统,以便开发者可以轻松地添加自己的定制功能。 ### 回答2: Qt Installer Framework是一个开源的安装包框架,用于创建跨平台的安装程序。它是由Qt官方社区开发的,用于帮助开发人员轻松地制作各种类型的安装程序。 Qt Installer Framework具有很多强大的特性。首先,它支持主流操作系统,包括Windows、macOS和Linux。这使得开发人员可以使用相同的框架来创建针对不同平台的安装程序,极大地简化了开发和维护的工作。 其次,Qt Installer Framework提供了一个灵活的界面,开发人员可以轻松地定制安装程序的界面。他们可以选择添加自定义的图标、背景图像和品牌标志等来打造与自己应用程序一致的安装体验。 此外,Qt Installer Framework还支持自定义安装组件,开发人员可以将安装的内容分组到不同的组件中,根据用户需求进行选择性安装。这对于大型应用程序来说非常有用,因为用户可以根据自己的需求选择安装哪些组件,从而减少不必要的空间占用。 另一个重要的特性是Qt Installer Framework支持安装程序的自动升级。开发人员可以配置安装程序,使其能够检测并下载更新,并在用户同意的情况下自动升级程序。这可以确保用户始终使用最新版本的应用程序,提供更好的用户体验以及安全性。 综上所述,Qt Installer Framework是一个功能强大且易于使用的安装包框架,可以帮助开发人员轻松创建跨平台的安装程序。它的灵活性和可定制性使得开发人员可以根据自己的需求创建出符合用户期望的安装体验。 ### 回答3: Qt Installer Framework(简称QtIFW)是一个创建安装程序的开源工具集,用于在Windows、Mac和Linux等操作系统上安装Qt应用程序。 Qt Installer Framework提供了一个易于使用的图形界面,允许开发者自定义安装向导和界面。它支持各种高级功能,如自动更新和升级、安装前检查依赖项、注册表设置、缓存管理等。 Qt Installer Framework的核心概念是组件。开发者可以将应用程序划分为多个组件,并在安装时选择安装哪些组件。这样,用户可以自定义安装过程,只选择需要的功能和资源,减少安装空间和时间。 Qt Installer Framework还支持多语言安装,用户可以选择在安装过程中使用哪种语言,提供了灵活的国际化功能。 此外,Qt Installer Framework还支持数字签名验证和认证,确保安装程序的完整性和可信性。 对于开发者来说,Qt Installer Framework提供了灵活的定制选项,可以自定义安装界面和过程,满足特定需求。开发者可以通过简单的脚本语言,定义安装程序的行为。 总的来说,Qt Installer Framework是一个功能强大、易于使用的工具集,为开发者提供了创建跨平台安装程序的便利,提升了用户体验和应用程序的可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值