Hola queridos Khabrovites, no hace mucho tiempo me interesé en programar en Qt, y después de escribir varios programas, surgió la pregunta sobre cómo implementar programas en otras computadoras. Resultó que hacer esto no era del todo conveniente, así que decidí escribir un pequeño programa simple con una interfaz gráfica agradable en la que sería fácil, incluso sin conocimientos básicos, crear una instalación y un instalador de programas. Pido a todos los interesados bajo cat.

Todo comenzó con el hecho de que era necesario implementar muchos proyectos diferentes y cada vez que no quería escribir muchas cartas en la consola (¡aquí está para la generación más joven!). Como tenía experiencia con qt y qml, decidí eliminar mi aplicación.
Los requisitos básicos eran inmediatamente obvios: el programa debería realizar implementaciones e instaladores para Windows. Qt tiene windeployqt y Qt Installer Framework para estas tareas. Además, de inmediato quise agregar la generación automática del archivo qmldir y los archivos de traducción.
Inicialmente, no dibujé el diseño, sino que simplemente pensé sobre la marcha y lo hice, resultó ser un error, ya que es difícil de tener en cuenta y tener en cuenta todos los detalles y capacidades del programa. Debido a esto, el primer programa resultó estar poco desarrollado y prácticamente no personalizable. Pero ella trabajó! Para ejecutar las utilidades, creo un archivo bat, instalo el entorno de trabajo allí:
set PATH=G:\Qt\5.13.2\mingw73_64/bin;G:\Qt\Tools\mingw730_64/bin;%PATH%\n
Y luego prescribo la utilidad que necesito, con argumentos configurados por el usuario agregados. Usando QProcess, ejecuto este archivo para su ejecución. Esto se hace con la implementación, el instalador y lupdate (generación de archivos de traducción), en el caso de qmldir, en principio, no se necesitan procesos, ya que hay una simple copia de los nombres de los archivos.
Aunque el programa funcionó, no me convenía, había muy pocas configuraciones, con errores en los argumentos, el programa no mostraba nada al usuario. Era necesario rehacerlo. Esta vez decidí dibujar todo en Figma, ordenarlo todo y refractar el código.

Como resultado, resultó bastante agradable en mi opinión (estoy lejos de ser un diseñador). También rehice la ventana de la utilidad, ahora muestra todo lo que la utilidad escribe en la consola e informa la finalización del trabajo con un botón agradable.

Después de completar el diseño, comenzó a rehacer gradualmente cada utilidad. Casi no hubo cambios en windeployqt, solo se agregó la configuración de un argumento más. Qmldir agregó funciones para seleccionar modificadores para cada archivo y selección de versión, generación de archivos. * Tipos Qml con grabación automática en qmldir. La mayoría de los cambios se realizaron en el instalador, solo hay un montón de parámetros, con la selección y configuración de cada paquete y el archivo config.xml con repositorios remotos. El programa crea la estructura de carpetas, archivos de configuración (config.xml y package.xml) y los llena, los paquetes en sí también se copian en la carpeta de datos. Puede crear 3 tipos de instaladores: solo fuera de línea, solo en línea y combinados, también hay 4 tipos cuando ciertos paquetes se excluyen del instalador, pero decidí que esta funcionalidad no es tan importante al principio y la agregaré en futuras versiones. Para los instaladores remotos, debe crear repositorios utilizando repogen.exe, el programa también sabe cómo hacerlo.
Para que el programa funcione, debe especificar la carpeta Qt en la computadora, la ruta al compilador en el número de versión Qt y la ruta al compilador en la carpeta Herramientas. Entiendo que esta no es la solución más conveniente y, por lo tanto, en futuras versiones haré el análisis de la carpeta Qt, con la elección del compilador a través de ComboBox.
Sin embargo, el trabajo aún no se ha completado hasta el final, es inconveniente manejar los mismos valores cada vez, y está mal, y necesita automatizarlo de alguna manera, por ejemplo, crear una sección de Scripts donde almacenar datos para ejecutar utilidades. También quiero agregar macdeployqt y linuxdeployqt.
Enlace al repositorio de Github
PD: Este es mi primer programa, puesto a disposición del público en general, estaré encantado de todos los comentarios. Como siempre, las críticas saludables son bienvenidas. También estaré muy satisfecho con las propuestas para aumentar la funcionalidad del programa.