I wanted to know if there is a way to do a silent install of the Qt run installer on Ubuntu Server?
I mean by-pass the options of the installer and do a default install?
As of today, there is no way to download pre-built binaries from the official installer without logging in. You can, however, build Qt from source code (wiki.qt.io/Building_Qt_5_from_Git) or use an unofficial installer (github.com/miurahr/aqtinstall), both without logging in.
For the per user install, the default installation will be a subdirectory called Qt in the current working directory. For the global install, the default location is /opt/Qt.
Newer Qt installers have a proper CLI that allows you to do something like:
qt-unified-windows-x86-4.2.0-online.exe ^ --accept-licenses ^ --default-answer ^ --confirm-command install ^ qt.qt5.5158.win64_msvc2019_64 ^ qt.qt5.5158.qtcharts ^ qt.qt5.5158.debug_info ^ qt.qt5.5158.src ^ qt.tools.qtcreator
See --help
for all options. To figure out package names, go through a graphical install but stop at the final confirmation screen that lists the package names for all your selections.
The Qt toolkit is packaged using the Qt Installer Framework (QtIFW). QtIFW installers support a --script
option that allows you to programatically control the installation via the Controller Scripting API. Here's qt-installer-noninteractive.qs
file to install Qt 5 non-interactively:
// 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); }
This script demonstrates how to select/deselect certain components. Customize for your needs or just remove the lines entirely for a default installation. Likewise, you may want to customize or remove the TargetDirectoryLineEdit
line. Run the Qt installer like:
qt-opensource-linux-x64-5.5.1.run --script qt-installer-noninteractive.qs
Add -platform minimal
for a headless installation. Future installers based on newer versions of QtIFW should be able to use a --silent
option instead (see QTIFW-166).
Add --verbose
for more verbose console output (helpful for gleaning component names, wizard page names, etc). This link is also helpful for figuring out component names.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With