web-dev-qa-db-fra.com

Installer en mode silencieux Qt exécuter le programme d'installation sur le serveur Ubuntu

Je voulais savoir s’il était possible de faire une installation silencieuse du programme d’installation Qt run sur Ubuntu Server?
Je veux dire contourner les options du programme d’installation et effectuer une installation par défaut?

34
Antoine Lafarge

La boîte à outils Qt est empaquetée à l'aide de Qt Installer Framework (QtIFW). Les installateurs QtIFW prennent en charge une option --script qui vous permet de contrôler l’installation à l’aide de programmes par le biais de Controller Scripting API . Voici le fichier qt-installer-noninteractive.qs 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() {
    // 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);
}

Ce script montre comment sélectionner/désélectionner certains composants. Personnalisez selon vos besoins ou supprimez simplement les lignes pour une installation par défaut. De même, vous souhaiterez peut-être personnaliser ou supprimer la ligne TargetDirectoryLineEdit. Exécutez le programme d'installation Qt comme suit:

qt-opensource-linux-x64-5.5.1.run --script qt-installer-noninteractive.qs

Ajoutez -platform minimal pour une installation sans installation. Les futurs installateurs basés sur des versions plus récentes de QtIFW devraient pouvoir utiliser une option --silent à la place (voir QTIFW-166 ).

Ajoutez --verbose pour une sortie plus détaillée de la console (utile pour glaner les noms de composants, les noms de page d’assistant, etc.). Ce lien est également utile pour déterminer le nom des composants.

49
nocnokneo

À partir du 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);
}
7
Nil

Il y a peu de différences mineures dans la réponse aux questions de wizard pour une version différente de Qt. Pour simplifier les choses, j'ai préparé un script générique pour extraire Qt d'un installateur hors ligne/en ligne. 

Le script: qtci/extract-qt-installer sur master · 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")

De plus, il a peu de scripts pour télécharger et installer Qt avec des versions différentes.

qtci/recettes chez maître · benlau/qtci

6
benlau

J'ai eu le même problème et ai créé un script python simple qui fait fondamentalement la même chose que le programme d'installation officiel de Qt. Vous pouvez le trouver ici .

Et c'est comment l'utiliser:

Sudo apt install python3-requests p7Zip-full wget

wget https://git.kaidan.im/lnj/qli-installer/raw/master/qli-installer.py
chmod +x qli-installer.py

./qli-installer.py 5.11.3 linux desktop

Ensuite, l'installation de Qt peut être trouvée à ./5.11.3/gcc_64/ dans ce cas. Avec d’autres systèmes/cibles (par exemple, mac ios ou linux Android android_armv7), cela sera évidemment différent.

https://lnj.gitlab.io/post/qli-installer/

0
LNJ