Automatisation de Qt Tool

Bonjour cher Khabrovites, il n'y a pas si longtemps, je me suis intéressé à la programmation sur Qt et après avoir écrit plusieurs programmes, la question s'est posée de savoir comment déployer des programmes sur d'autres ordinateurs. Il s'est avéré que faire cela n'était pas très pratique, j'ai donc décidé d'écrire un petit programme simple avec une belle interface graphique dans laquelle il serait facile, même sans connaissances de base, de créer un déploiement et un programme d'installation. Je demande à tous les intéressés sous cat.



Tout a commencé par le fait qu'il fallait déployer de nombreux projets différents et à chaque fois je ne voulais pas écrire beaucoup de lettres dans la console (ici c'est pour la jeune génération!). Comme j'avais de l'expérience avec qt et qml, j'ai décidé de vider mon application.


Les exigences de base étaient immédiatement évidentes - le programme devrait effectuer des déploiements et des installateurs pour Windows. Qt a windeployqt et Qt Installer Framework pour ces tâches. Aussi, j'ai immédiatement voulu ajouter la génération automatique du fichier qmldir et des fichiers de traduction.


Au départ, je n'ai pas dessiné le design, mais j'ai simplement pensé sur le pouce et l'ai fait, cela s'est avéré être une erreur, car il est difficile de prendre en compte et de garder à l'esprit tous les détails et fonctionnalités du programme. Pour cette raison, le premier programme s'est révélé peu développé et pratiquement non personnalisable. Mais elle a travaillé! Pour exécuter les utilitaires, je crée un fichier bat, y installe l'environnement de travail:


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

Et puis je prescris l'utilitaire dont j'ai besoin, avec des arguments configurés par l'utilisateur qui y sont ajoutés. À l'aide de QProcess, j'exécute ce fichier pour exécution. Cela se fait avec le déploiement, l'installateur et lupdate (génération de fichiers de traduction), dans le cas de qmldir, en principe, aucun processus n'est nécessaire, car il y a une simple copie des noms de fichiers.


Bien que le programme ait fonctionné, il ne me convenait pas, il y avait trop peu de paramètres, avec des erreurs dans les arguments, le programme n'affichait rien à l'utilisateur. Il fallait le refaire. Cette fois, j'ai décidé de tout dessiner dans Figma, de tout trier et de réfracter le code.




En conséquence, cela s'est avéré plutôt agréable à mon avis (je suis loin d'être un designer). J'ai également refait la fenêtre de l'utilitaire, maintenant il affiche tout ce que l'utilitaire écrit sur la console et signale la fin du travail avec un joli bouton.




Après avoir terminé la conception, il a commencé à refaire progressivement chaque utilitaire. Il n'y a eu pratiquement aucun changement dans windeployqt, seul le réglage d'un argument supplémentaire a été ajouté. Qmldir a ajouté des fonctions pour sélectionner des modificateurs pour chaque sélection de fichier et de version, génération de fichier. * Qmltypes avec enregistrement automatique dans qmldir. La plupart des modifications ont été apportées à l'installateur, il y a juste un tas de paramètres, avec la sélection et la configuration de chaque package et le fichier config.xml avec des référentiels distants. Le programme lui-même crée la structure des dossiers, des fichiers de configuration (config.xml et package.xml) et les remplit, les packages eux-mêmes sont également copiés dans le dossier de données. Vous pouvez créer 3 types d'installateurs: uniquement hors ligne, uniquement en ligne et combinés, il existe également 4 types lorsque certains packages sont exclus du programme d'installation, mais j'ai décidé que cette fonctionnalité n'était pas si importante au début et je l'ajouterai dans les futures versions. Pour les installateurs distants, vous devez créer des référentiels à l'aide de repogen.exe, le programme sait également comment procéder.


Pour que le programme fonctionne, vous devez spécifier le dossier Qt sur l'ordinateur, le chemin d'accès au compilateur dans le numéro de version Qt et le chemin d'accès au compilateur dans le dossier Tools. Je comprends que ce n'est pas la solution la plus pratique et donc dans les futures versions je ferai l'analyse du dossier Qt, avec le choix du compilateur via ComboBox.


Cependant, le travail n'est pas encore terminé jusqu'à la fin, il n'est pas pratique de générer les mêmes valeurs à chaque fois, et c'est faux, et vous devez l'automatiser d'une manière ou d'une autre, par exemple, créer une section Scripts où stocker les données pour exécuter les utilitaires. Je veux également ajouter macdeployqt et linuxdeployqt.


Lien vers le référentiel Github


PS Ceci est mon premier programme, mis à la disposition du grand public, je serai heureux de tous les commentaires. Comme toujours, une critique saine est la bienvenue. Je serai également très satisfait des propositions visant à accroître la fonctionnalité du programme.

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


All Articles