首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ubuntu服务器上静默安装Qt运行安装程序

在ubuntu服务器上静默安装Qt运行安装程序
EN

Stack Overflow用户
提问于 2014-08-03 21:45:47
回答 9查看 27.5K关注 0票数 50

我想知道是否有一种方法可以在Ubuntu服务器上静默安装Qt运行安装程序?

我的意思是绕过安装程序的选项,进行默认安装?

EN

回答 9

Stack Overflow用户

发布于 2015-12-02 07:29:23

Qt工具包是使用Qt安装程序框架(QtIFW)打包的。QtIFW安装程序支持--script选项,该选项允许您通过Controller Scripting API以编程方式控制安装。下面是以非交互方式安装Qt 5的qt-installer-noninteractive.qs文件:

代码语言:javascript
复制
// Emacs mode hint: -*- mode: JavaScript -*-

function Controller() {
    installer.autoRejectMessageBoxes();
    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, 3000);
}

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

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

Controller.prototype.TargetDirectoryPageCallback = function()
{
    gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.value("HomeDir") + "/Qt");
    gui.clickButton(buttons.NextButton);
}

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

    widget.deselectAll();
    widget.selectComponent("qt.55.gcc_64");
    widget.selectComponent("qt.55.qtquickcontrols");

    // widget.deselectComponent("qt.tools.qtcreator");
    // widget.deselectComponent("qt.55.qt3d");
    // widget.deselectComponent("qt.55.qtcanvas3d");
    // widget.deselectComponent("qt.55.qtlocation");
    // widget.deselectComponent("qt.55.qtquick1");
    // widget.deselectComponent("qt.55.qtscript");
    // widget.deselectComponent("qt.55.qtwebengine");
    // widget.deselectComponent("qt.extras");
    // widget.deselectComponent("qt.tools.doc");
    // widget.deselectComponent("qt.tools.examples");

    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);
}

此脚本演示了如何选择/取消选择某些组件。根据您的需要进行自定义,或者完全删除默认安装所需的行。同样,您可能希望自定义或删除TargetDirectoryLineEdit行。如下所示运行Qt安装程序:

代码语言:javascript
复制
qt-opensource-linux-x64-5.5.1.run --script qt-installer-noninteractive.qs

添加-platform minimal以进行无头安装。基于较新版本QtIFW的未来安装程序应该能够改用--silent选项(请参阅QTIFW-166)。

添加--verbose以获得更详细的控制台输出(有助于收集组件名称、向导页面名称等)。This link对于确定组件名称也很有帮助。

票数 62
EN

Stack Overflow用户

发布于 2017-12-15 02:45:43

从installer 4.X开始,您不再需要处理JS文件。Qt online installer的4.0版本对无头安装提供了一流的支持。有关详细信息,请参阅this answer

从installer 3.0.2-online 2017年29月11日起,您必须在JS脚本中添加延迟,因为“欢迎”页面中的“下一步”按钮被禁用了一秒钟左右。

代码语言:javascript
复制
Controller.prototype.WelcomePageCallback = function() {
    gui.clickButton(buttons.NextButton, 3000);
}

这一次,他们在3.2.1-online 29-01-2020 release page上解释了如何跳过新表单

代码语言:javascript
复制
Controller.prototype.ObligationsPageCallback = function() {
    var page = gui.pageWidgetByObjectName("ObligationsPage");
    page.obligationsAgreement.setChecked(true);
    page.completeChanged();
    gui.clickButton(buttons.NextButton);
}

有些人可能想知道如何创建神秘的qtaccount.ini文件(从3.2.1-2-online开始就需要)。Qt只告诉我们它应该放在~/.local/share/Qt/中。我找不到任何其他信息。当您第一次输入凭据时,安装程序会自行创建此文件。因此,只需手动安装并在帐户表单后退出即可。生成的文件如下所示

代码语言:javascript
复制
[General]
email=my.email@domain.ca
pass=mypass

[QtAccount]
email=my.email@domain.ca
jwt=a long hash
u=a small hash
票数 13
EN

Stack Overflow用户

发布于 2019-10-09 04:38:22

2020更新:现在有了更好的方法。

Qt online installer的4.0版本对无头安装提供了一流的支持。

有关详细信息,请参阅this answer below

原始答案:

绕过"User Data Collection“屏幕

从2019年10月8日起,Windows上添加了一个额外的屏幕,这将导致安装挂起。您可以通过在.qs文件中添加以下内容来单击它:

代码语言:javascript
复制
Controller.prototype.DynamicTelemetryPluginFormCallback = function() {
    var widget = gui.currentPageWidget();
    widget.TelemetryPluginForm.statisticGroupBox.disableStatisticRadioButton.checked = true;
    gui.clickButton(buttons.NextButton);
}

选择“存档”和“最新版本”

最近的另一个变化是打包类别。LTS现在是默认选择的唯一一个,这意味着您不能安装最新的Qt版本,除非首先在包类别中选择“最新版本”。

下面是如何做到这一点的:

代码语言:javascript
复制
Controller.prototype.ComponentSelectionPageCallback = function() {
    var page = gui.pageWidgetByObjectName("ComponentSelectionPage");

    var archiveCheckBox = gui.findChild(page, "Archive");
    var latestCheckBox = gui.findChild(page, "Latest releases");
    var fetchButton = gui.findChild(page, "FetchCategoryButton");

    archiveCheckBox.click();
    latestCheckBox.click();
    fetchButton.click();

    // ...
}

有关更完整的示例,请参阅here

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25105269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档