> Il fut un temps où il fallait générer des packages pour chaque distribution (Ubuntu, Fedora, Arch ...) en utilisant à chaque fois un format spécifique et
des commandes alamniquées au possible. De plus, il fallait également suivre de près les évolutions de chaque distribution pour la gestion des dépendances. Horrible,
surtout lorsque l'on est seul. Heureusement, les temps ont changé !
Si la génération de packages au format des distribution a un sens si votre application est officiellement supportée (suivi des patchs de s&écurité, partage des librairies ...),
cela n'as pas vraiment grand intérêt lorsque vous voulez distribuer une application seule par votre propre canal de diffusion.
Depuis quelques années, nous voyons plusieurs formats concurrents permettant de générer un package "tout compris" contenant votre exécutable et toutes les ressources tierces
nécessaires à son fonctionnement (images, sons, librairies dynamiques ...). Cependant, ces nouveaux standards ne reposent pas tous sur la même architecture. On notera donc :
Pour la comparaison entre les trois, je vous redirige vers des tableaux comparatifs très bien faits, ici : https://github.com/AppImage/AppImageKit/wiki/Similar-projects
Tout d'abord, il faut télécharger une application, au format AppImage
justement, qui permet de générer notre package. C'est le pendant Linux des outils windeployqt et macdeployqt disponibles en standard dans votre installation de Qt pour respectivement Windows et
MacOS. Il s'agit de linuxdeployqt : https://github.com/probonopd/linuxdeployqt.
Une fois téléchargé, ajoutez la propriété "exécutable" au fichier, soit via votre gestionnaire de fichier, soit en ligne de commandes `(chmod +x linuxdeployqt-continuous-x86_64.AppImage)`
Ensuite, compilez votre application en release puis créer une arborescence
└── usr
├── bin
│ └── your_app
├── lib
└── share
├── applications
│ └── your_app.desktop
└── icons
└──
└──
└── apps
└── your_app.png
Remplacer `
mkdir -p usr/bin
mkdir -p usr/lib
mkdir -p usr/share/applications
mkdir -p usr/share/icons/hicolor/512x512
Voici notre fichier contenant les informations standards, toujours en suivant les recommandations de Freedesktop :
[Desktop Entry]
Type=Application
Name=Ultimate QR Code
Comment=QR Code generator
Exec=UltimateQRCode
Icon=ultimateqrcode_logo
Categories=Graphics;2DGraphics;
Au final, voici notre arborescence :
usr/
├── bin
│ └── UltimateQRCode
├── lib
└── share
├── applications
│ └── ultimateqrcode.desktop
└── icons
└── hicolor
└── 512x512
└── ultimateqrcode_logo.png
7 directories, 3 files
Maintenant, lançons la commande de génération, attention c'est un peu longuet, surtout à la première exécution. J'ai rencontré plusieurs difficultés ici :
Voici la commande utilisée :
~/Applications/linuxdeployqt-continuous-x86_64.AppImage usr/share/applications/ultimateqrcode.desktop -qmake=/home/anthony/Qt/5.11.1/gcc_64/bin/qmake -appimage -qmldir=/home/anthony/git/ultimateqrcode/
Oui ça fait peur, la commande a tendance à ne rien faire pendant longtemps mais ça finit par terminer, avec succès on espère. Pour ma part, j'ai un fichier nommé Ultimate_QR_Code-x86_64.AppImage, et qui fonctionne !
Notez qu'il est mis "exécutable" automatiquement par le script.
Enfin, j'ai demandé à ce que mon application, UltimateQRCode, soit référencée dans AppImageHub, un projet communautaire de référencement d'applications au format AppImage (Flatpak et Snap ont des équivalents).
Que reste-t-il à faire ? Un petit script Bash regroupant toutes ces étapes à partir du dossier source !
Retrouvez l'application pour Linux - N'IMPRTE LEQUEL ! - ici : https://github.com/arabine/ultimateqrcode/releases/download/latest/Ultimate_QR_Code-x86_64.AppImage