Qt安装程序脚本API:无法在在线安装程序中选择最新的Qt版本

约书亚·韦德

Qt联机安装程序提取的元数据的最新更新进行了一些重大更改,这些更改破坏了我的Windows CI / CD安装脚本。

我已经解决了一个问题(绕过了统计信息收集屏幕-参见DynamicTelemetryPluginFormCallback下文),但是我遇到了另一个问题。在“选择组件”屏幕上,默认选择的包类别现在只是LTS,似乎没有办法从脚本中更改它。这意味着我无法安装最新的Qt版本Qt 5.13.1。我不能使用5.12,因为它没有在我的应用程序中使用Qt Controls 2 SplitView这是我当前的安装脚本,部分源于此答案在2019年10月8日之前运行良好:

function Controller() {
    installer.autoRejectMessageBoxes();
    installer.setMessageBoxAutomaticAnswer("installationErrorWithRetry", QMessageBox.Ignore);
    installer.setMessageBoxAutomaticAnswer("installationError", QMessageBox.Ignore);
    installer.installationFinished.connect(function() {
        gui.clickButton(buttons.NextButton);
    });
}

Controller.prototype.WelcomePageCallback = function() {
    // click delay here because the next button is initially disabled for ~1 second
    gui.clickButton(buttons.NextButton, 10000);
}

Controller.prototype.CredentialsPageCallback = function() {
    gui.clickButton(buttons.NextButton);
}

Controller.prototype.IntroductionPageCallback = function() {
    gui.clickButton(buttons.NextButton);
}

Controller.prototype.DynamicTelemetryPluginFormCallback = function() {
    var widget = gui.currentPageWidget();
    widget.TelemetryPluginForm.statisticGroupBox.disableStatisticRadioButton.checked = true;
    gui.clickButton(buttons.NextButton);
}

Controller.prototype.TargetDirectoryPageCallback = function() {
    gui.currentPageWidget().TargetDirectoryLineEdit.setText("C:\\Qt");
    gui.clickButton(buttons.NextButton);
}

Controller.prototype.ComponentSelectionPageCallback = function() {
    var widget = gui.currentPageWidget();

    console.log(JSON.stringify(widget));

    widget.ComponentsTreeView.

    widget.deselectAll();
    widget.selectComponent("qt.qt5.5131.win64_mingw73");
    widget.selectComponent("qt.tools.win64_mingw730");

    gui.clickButton(buttons.NextButton);
}

Controller.prototype.LicenseAgreementPageCallback = function() {
    gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true);
    gui.clickButton(buttons.NextButton);
}

Controller.prototype.StartMenuDirectoryPageCallback = function() {
    gui.clickButton(buttons.NextButton);
}

Controller.prototype.ReadyForInstallationPageCallback = function() {
    gui.clickButton(buttons.NextButton);
}

Controller.prototype.FinishedPageCallback = function() {
    var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm;
    if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox) {
        checkBoxForm.launchQtCreatorCheckBox.checked = false;
    }
    gui.clickButton(buttons.FinishButton);
}

我正在运行脚本 <path to installer>.exe --script <path to installer script>.qs --verbose

使用此安装脚本运行在线安装程序不会导致任何错误,但是不会安装qt.qt5.5131.win64_mingw73

约书亚·韦德

我在Github上找到了一个可以解决我的问题的示例。ComponentSelectionPageCallback现在看起来像这样:

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

    var checkBox = gui.findChild(page, "Latest releases");
    var fetchButton = gui.findChild(page, "FetchCategoryButton");

    checkBox.click();
    fetchButton.click();

    var widget = gui.currentPageWidget();

    widget.deselectAll();
    widget.selectComponent("qt.qt5.5131.win64_mingw73");
    widget.selectComponent("qt.tools.win64_mingw730");

    gui.clickButton(buttons.NextButton);
}

有关完整示例,请参见Github上的此文件

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qt 5.6.0在线安装程序无法正常工作

来自分类Dev

如何编写Qt安装程序的脚本

来自分类Dev

Qt安装程序框架

来自分类Dev

Qt安装程序卡住

来自分类Dev

无法跳过Qt安装程序中的登录?

来自分类Dev

Qt安装程序框架:TypeError无法读取属性名称

来自分类Dev

安装程序在 ubuntu 上安装 qt 和 qt creator 崩溃

来自分类Dev

Centos 6.4上国际象棋的在线安装程序Qt用qmake编译

来自分类Dev

Qt安装程序框架:翻译组件说明

来自分类Dev

Qt安装程序框架:自动更新

来自分类Dev

Qt安装程序框架隐藏或禁用按钮

来自分类Dev

安装Qt 5的postgres驱动程序

来自分类Dev

Qt安装程序框架mac桌面别名

来自分类Dev

根据在线文件设置Inno Setup安装程序版本

来自分类Dev

安装两个依赖不同版本Qt的应用程序

来自分类Dev

无法从最新的 nodejs LTS 安装程序中获得正确的 NPM 版本

来自分类Dev

Qt版本未正确安装

来自分类Dev

安装最新版本的Angular ui引导程序

来自分类Dev

从bash脚本安装程序

来自分类Dev

从bash脚本安装程序

来自分类Dev

使用Qt安装程序框架创建我的应用程序安装程序

来自分类Dev

在Ubuntu安装程序中选择“使用LVM”如何工作?

来自分类Dev

在Ubuntu安装程序中选择“使用LVM”如何工作?

来自分类常见问题

在未安装qt的Linux上启动qt5应用程序时,“无法加载平台插件“ xcb”“

来自分类Dev

在在线Gitlab ci上安装Java

来自分类Dev

在在线Gitlab ci上安装Java

来自分类Dev

Qt C ++应用程序:Linux中的自动启动安装

来自分类Dev

如何找到Qt应用程序的安装目录?

来自分类Dev

Qt安装程序框架:如何对maintenancetool.exe进行签名

Related 相关文章

热门标签

归档