Qt silent installation on Linux server
-
@mrjj , You can find the script here
function Controller() { installer.autoRejectMessageBoxes(); installer.setMessageBoxAutomaticAnswer("installationError", QMessageBox.Retry); installer.setMessageBoxAutomaticAnswer("installationErrorWithRetry", QMessageBox.Retry); installer.setMessageBoxAutomaticAnswer("DownloadError", QMessageBox.Retry); installer.setMessageBoxAutomaticAnswer("archiveDownloadError", QMessageBox.Retry); 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() { //dev is the user in our docker image gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.value("HomeDir") + "/Qt"); gui.clickButton(buttons.NextButton); } Controller.prototype.PerformInstallationPageCallback = function() { gui.clickButton(buttons.CommitButton); } Controller.prototype.ComponentSelectionPageCallback = function() { function list_packages() { var components = installer.components(); console.log("Available components: " + components.length); var packages = ["Packages: "]; for (var i = 0 ; i < components.length ;i++) { packages.push(components[i].name); } console.log(packages.join(" ")); } list_packages(); var widget = gui.currentPageWidget(); console.log(widget); widget.deselectAll(); widget.selectComponent("qt.qt5.5130"); widget.selectComponent("qt.qt5.5130.gcc_64"); // widget.deselectComponent(""); 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); }
-
@Kallappa
Hi
It seems it's missing a section for the new screen with openSource infoI can't recall if it has a next button or an ok button
you could try to addController.prototype.ObligationsPageCallback= function()
{
gui.clickButton(buttons.NextButton);
}and see.
-
i have added ObligationsPageCallback function as below
Controller.prototype.ObligationsPageCallback = function() { var page = gui.pageWidgetByObjectName("ObligationsPage"); page.obligationsAgreement.setChecked(true); page.completeChanged(); gui.clickButton(buttons.NextButton); }
and it completes the installation
but but i don't have qmake to compile qt applicationsif am wrong sorry for above information, i am new to this
-
@mrjj
hi,
I mean i need qt environement to build qt application on Linux server
so i need qmake and make to compile qt source code.but i didn't found this on ~/Qt directory
i have only below folders/filesInstallationLog.txt MaintenanceTool.dat components.xml installerResources Licenses MaintenanceTool.ini dist network.xml MaintenanceTool Tools installer.dat
-
@Kallappa
It seems that
widget.selectComponent("qt.qt5.5130");
widget.selectComponent("qt.qt5.5130.gcc_64");didnt really select anything?
if you look at the link a user posted
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(); // ... }
Do you have that in script ?
As now the versions are grouped so i think the script is not totally updated with the new installers. -
@mrjj ,
No the part above mentioned is not there in script for this it is as below
Controller.prototype.ComponentSelectionPageCallback = function() { function list_packages() { var components = installer.components(); console.log("Available components: " + components.length); var packages = ["Packages: "]; for (var i = 0 ; i < components.length ;i++) { packages.push(components[i].name); } console.log(packages.join(" ")); } list_packages(); var widget = gui.currentPageWidget(); console.log(widget); widget.deselectAll(); widget.selectComponent("qt.qt5.5130"); widget.selectComponent("qt.qt5.5130.gcc_64"); // widget.deselectComponent(""); gui.clickButton(buttons.NextButton); }
-
@mrjj,
Hi,if i add the part
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(); // ...
it give error for click() as function doesn't exist
-
@Kallappa
sadly there is no commandline install version.We need to change these lines
widget.selectComponent("qt.qt5.5130");
widget.selectComponent("qt.qt5.5130.gcc_64");
but I not sure what names should be for
Qt5.14.0
or if they will be in Archive.Do you use the newest online installer from Qt site ?
It seems to have Qt5.14.0 in front
-
hi
You can try
widget.selectComponent("qt.qt5.14.2");
widget.selectComponent("qt.qt5.14.2.gcc_64");
and see if that works.I hope "Latest releases" is checked by default when running with this script else it wont work as nothing in list then.
-
Do yourself a favor and DO NOT USE the offical Qt installers anymore. Use aqt install: https://github.com/miurahr/aqtinstall - Works perfectly on every platform.