Otomasi Alat Qt

Halo Khabrovites, belum lama ini saya menjadi tertarik pada pemrograman pada Qt, dan setelah menulis beberapa program, muncul pertanyaan tentang bagaimana cara menyebarkan program di komputer lain. Ternyata, melakukan ini tidak terlalu nyaman, jadi saya memutuskan untuk menulis program kecil sederhana dengan antarmuka grafis yang bagus di mana akan mudah, bahkan tanpa pengetahuan dasar, untuk membuat penyebaran dan penginstal program. Saya bertanya semua yang tertarik di bawah kucing.



Semuanya dimulai dengan fakta bahwa perlu untuk menyebarkan banyak proyek yang berbeda dan setiap kali saya tidak ingin menulis banyak surat di konsol (ini untuk generasi muda!). Karena saya memiliki pengalaman dengan qt dan qml, saya memutuskan untuk menyiram aplikasi saya.


Persyaratan dasar segera jelas - program harus membuat penyebaran dan pemasangan untuk Windows. Qt memiliki windeployqt dan Qt Installer Framework untuk tugas-tugas ini. Selain itu, saya segera ingin menambahkan pembuatan otomatis file qmldir dan file terjemahan.


Awalnya, saya tidak menggambar desain, tetapi hanya berpikir saat bepergian dan melakukannya, ternyata menjadi kesalahan, karena sulit untuk memperhitungkan dan mengingat semua detail dan kemampuan program. Karena itu, program pertama ternyata kurang berkembang dan praktis tidak dapat dikustomisasi. Tapi dia berhasil! Untuk menjalankan utilitas, saya membuat file bat, menginstal lingkungan kerja di sana:


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

Dan kemudian saya meresepkan utilitas yang saya butuhkan, dengan argumen yang dikonfigurasi pengguna ditambahkan ke dalamnya. Menggunakan QProcess, saya menjalankan file ini untuk dieksekusi. Ini dilakukan dengan penyebaran, penginstal, dan pembaruan (pembuatan file terjemahan), dalam kasus qmldir, pada prinsipnya, tidak ada proses yang diperlukan, karena ada penyalinan sederhana dari nama file.


Meskipun program ini bekerja, itu tidak cocok untuk saya, ada terlalu sedikit pengaturan, dengan kesalahan dalam argumen, program tidak menampilkan apa pun kepada pengguna. Itu perlu untuk mengulanginya. Kali ini saya memutuskan untuk menggambar semuanya dalam Figma, memilah semuanya, dan membiasakan kode.




Alhasil, ternyata menurut saya lumayan bagus (saya jauh dari desainer). Saya juga redid jendela utilitas, sekarang ini menampilkan semua yang utilitas menulis ke konsol dan melaporkan penyelesaian pekerjaan dengan tombol yang bagus.




Setelah menyelesaikan desain, ia mulai secara bertahap mengulang setiap utilitas. Hampir tidak ada perubahan pada windeployqt, hanya pengaturan satu argumen lagi yang ditambahkan. Qmldir menambahkan fungsi untuk memilih pengubah untuk setiap file dan pemilihan versi, pembuatan file. * Qmltypes dengan perekaman otomatis dalam qmldir. Sebagian besar perubahan dilakukan pada installer, hanya ada banyak parameter, dengan pemilihan dan konfigurasi setiap paket dan file config.xml dengan repositori jarak jauh. Program itu sendiri menciptakan struktur folder, file konfigurasi (config.xml dan package.xml) dan mengisinya, juga paket-paket itu sendiri disalin ke folder data. Anda dapat membuat 3 jenis installer: hanya offline, hanya online dan gabungan, ada juga 4 jenis ketika paket tertentu dikeluarkan dari installer, tetapi saya memutuskan bahwa fungsi ini tidak begitu penting pada awalnya dan saya akan menambahkannya di versi mendatang. Untuk penginstal jarak jauh, Anda perlu membuat repositori menggunakan repogen.exe, program ini juga tahu bagaimana melakukan ini.


Agar program dapat berfungsi, Anda perlu menentukan folder Qt di komputer, jalur ke kompiler di nomor versi Qt dan jalur ke kompiler di folder Tools. Saya mengerti bahwa ini bukan solusi yang paling nyaman dan oleh karena itu dalam versi masa depan saya akan melakukan parsing folder Qt, dengan pilihan kompiler melalui ComboBox.


Namun, pekerjaan tersebut belum selesai sampai akhir, itu tidak nyaman untuk mendorong nilai yang sama setiap kali, dan itu salah, dan Anda perlu mengotomasinya entah bagaimana, misalnya, membuat bagian Skrip tempat menyimpan data untuk menjalankan utilitas. Saya juga ingin menambahkan macdeployqt dan linuxdeployqt.


Tautan repositori Github


PS Ini adalah program pertama saya, dibuat tersedia untuk umum untuk umum, saya akan senang untuk semua komentar. Seperti biasa, kritik yang sehat disambut. Saya juga akan sangat senang dengan proposal untuk meningkatkan fungsionalitas program.

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


All Articles