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?
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.
À 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);
}
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.
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.