Silent install Qt run installer sur le serveur ubuntu
je voulais savoir s'il y avait un moyen de faire une installation silencieuse de L'installateur Qt run sur le serveur Ubuntu?
Je veux dire by-pass les options de l'installateur et faire une installation par défaut?
3 réponses
la boîte à outils Qt est empaquetée à l'aide du QT Installer Framework (QtIFW). Les installateurs QtIFW supportent un --script
option qui vous permet de contrôler programmatiquement l'installation via le Contrôleur API de Script. Ici qt-installer-noninteractive.qs
le fichier pour installer Qt 5 de manière non interactive:
// Emacs mode hint: -*- mode: JavaScript -*-
function Controller() {
installer.autoRejectMessageBoxes();
installer.installationFinished.connect(function() {
gui.clickButton(buttons.NextButton);
})
}
Controller.prototype.WelcomePageCallback = function() {
gui.clickButton(buttons.NextButton);
}
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);
}
Ce script montre comment sélectionner/désélectionner certains composants. Personnalisez pour vos besoins ou simplement supprimez les lignes entièrement pour une installation par défaut. De même, vous pouvez personnaliser ou supprimer les TargetDirectoryLineEdit
ligne. Exécutez L'installateur Qt comme:
qt-opensource-linux-x64-5.5.1.run --script qt-installer-noninteractive.qs
Ajouter -platform minimal
pour une installation sans tête. Les futurs installateurs basés sur les nouvelles versions de QtIFW devraient pouvoir utiliser un --silent
option à la place (voir QTIFW-166).
Ajouter --verbose
pour plus de commentaires sortie de la console (utile pour glaner les noms des composants, page de l'assistant de noms, etc)
il y a peu de différences mineures dans la réponse aux questions de wizard pour un autre type de version de Qt. Pour le rendre plus simple, j'ai emballé un script générique pour extraire Qt d'un installateur hors ligne/en ligne.
Le script: qtci/extrait-qt-installer au maître · benlau/qtci
Exemple D'Utilisation:
extract-qt-installer qt-opensource-linux-x64-android-5.5.1.run ~/Qt
Variables D'Environnement"
VERBOSE [Optional] Set to "true" will enable VERBOSE output
QT_CI_PAGEAGES [Optional] Select the components to be installed instead of using default (eg. QT_CI_PAGEAGES="qt.59.gcc_64")
à partir de l'installateur 3.0.2-online
29-11-2017, vous devez ajouter un délai dans votre script JS car le bouton "Suivant" de la page "Bienvenue" est désactivé pendant une seconde environ.
Controller.prototype.WelcomePageCallback = function() {
gui.clickButton(buttons.NextButton, 3000);
}