Qt Tool Automation

Hallo liebe Khabrovites, vor nicht allzu langer Zeit begann ich mich für das Programmieren mit Qt zu interessieren. Nachdem ich mehrere Programme geschrieben hatte, stellte sich die Frage, wie man Programme auf anderen Computern bereitstellt. Wie sich herausstellte, war dies nicht sehr bequem, und so entschied ich mich, ein einfaches kleines Programm mit einer schönen grafischen Oberfläche zu schreiben, in dem es auch ohne Grundkenntnisse einfach wäre, ein Deployment- und Programminstallationsprogramm zu erstellen. Ich frage alle Interessierten unter Katze.



Alles begann mit der Tatsache, dass es notwendig war, viele verschiedene Projekte bereitzustellen und jedes Mal, wenn ich nicht viele Briefe in die Konsole schreiben wollte (hier ist es für die jüngere Generation!). Da ich Erfahrung mit qt und qml hatte, entschloss ich mich, meine Anwendung zu leeren.


Die grundlegenden Anforderungen waren sofort offensichtlich - das Programm sollte Bereitstellungen und Installationsprogramme für Windows vornehmen. Qt hat windeployqt und das Qt Installer Framework für diese Aufgaben. Außerdem wollte ich sofort die automatische Generierung der qmldir-Datei und der Übersetzungsdateien hinzufügen.


Anfänglich habe ich das Design nicht gezeichnet, sondern nur unterwegs nachgedacht, und es hat sich als Fehler herausgestellt, da es schwierig ist, alle Details und Funktionen des Programms zu berücksichtigen und im Auge zu behalten. Aus diesem Grund erwies sich das erste Programm als schlecht entwickelt und praktisch nicht anpassbar. Aber sie hat gearbeitet! Um die Dienstprogramme auszuführen, erstelle ich eine bat-Datei und installiere die Arbeitsumgebung dort:


set PATH=G:\Qt\5.13.2\mingw73_64/bin;G:\Qt\Tools\mingw730_64/bin;%PATH%\n 

Und dann verschreibe ich das Dienstprogramm, das ich benötige, mit benutzerdefinierten Argumenten. Mit QProcess führe ich diese Datei zur Ausführung aus. Dies geschieht mit dem Deployment, Installer und Lupdate (Übersetzungsdateigenerierung), bei qmldir sind im Prinzip keine Prozesse erforderlich, da die Dateinamen einfach kopiert werden.


Obwohl das Programm funktionierte, passte es mir nicht, es gab zu wenige Einstellungen, mit Fehlern in den Argumenten, das Programm zeigte dem Benutzer nichts an. Es war notwendig, es zu wiederholen. Dieses Mal habe ich beschlossen, alles in Figma zu zeichnen, alles zu sortieren und den Code zu brechen.




Infolgedessen ist es meiner Meinung nach ziemlich gut ausgefallen (ich bin weit entfernt von einem Designer). Ich habe auch das Fenster des Dienstprogramms überarbeitet, jetzt zeigt es alles an, was das Dienstprogramm auf die Konsole schreibt, und meldet den Abschluss der Arbeit mit einem netten Knopf.




Nachdem er das Design fertiggestellt hatte, begann er, jedes Dienstprogramm nach und nach zu überarbeiten. Es gab fast keine Änderungen im Windeployqt, nur die Einstellung eines weiteren Arguments wurde hinzugefügt. Qmldir fügte Funktionen zur Auswahl von Modifikatoren für jede Datei- und Versionsauswahl sowie zur Dateigenerierung hinzu. * Qmltypen mit automatischer Aufzeichnung in qmldir. Die meisten Änderungen wurden am Installationsprogramm vorgenommen. Es gibt nur eine Reihe von Parametern, darunter die Auswahl und Konfiguration der einzelnen Pakete sowie die Datei config.xml mit den Remote-Repositorys. Das Programm selbst erstellt die Struktur der Ordner, Konfigurationsdateien (config.xml und package.xml) und füllt sie, auch die Pakete selbst werden in den Datenordner kopiert. Sie können drei Arten von Installationsprogrammen erstellen: Nur offline, nur online und kombiniert. Es gibt auch vier Arten, bei denen bestimmte Pakete vom Installationsprogramm ausgeschlossen sind. Ich habe jedoch entschieden, dass diese Funktionalität zunächst nicht so wichtig ist, und werde sie in zukünftigen Versionen hinzufügen. Für Remote-Installer müssen Sie Repositorys mit repogen.exe erstellen. Das Programm weiß auch, wie das geht.


Damit das Programm funktioniert, müssen Sie den Qt-Ordner auf dem Computer, den Pfad zum Compiler in der Qt-Versionsnummer und den Pfad zum Compiler im Tools-Ordner angeben. Ich verstehe, dass dies nicht die bequemste Lösung ist und daher werde ich in zukünftigen Versionen das Parsing des Qt-Ordners durchführen, wobei der Compiler über die ComboBox ausgewählt wird.


Die Arbeit ist jedoch erst am Ende abgeschlossen. Es ist unpraktisch, jedes Mal dieselben Werte zu verwenden, und es ist falsch. Sie müssen sie irgendwie automatisieren. Erstellen Sie beispielsweise einen Abschnitt "Skripte", in dem Daten für die Ausführung von Dienstprogrammen gespeichert werden. Ich möchte auch macdeployqt und linuxdeployqt hinzufügen.


Github-Repository-Link


PS Dies ist mein erstes Programm, das der Öffentlichkeit zugänglich gemacht wird. Ich freue mich über alle Kommentare. Gesunde Kritik ist wie immer willkommen. Ich werde auch mit den Vorschlägen zur Verbesserung der Funktionalität des Programms sehr zufrieden sein.

Source: https://habr.com/ru/post/de482682/


All Articles