Passer au contenu du pied de page
Iron Academy Logo
Application C#
Application C#

Autres catégories

Déployer et mettre à jour rapidement des applications de bureau en C# avec Velopack

Tim Corey
32m 25s

Le déploiement et la mise à jour d'applications de bureau multiplateformes ont toujours été l'une des parties les plus frustrantes du développement. Mais comme l'explique Tim Corey dans sa vidéo "Déployer et mettre à jour rapidement des applications de bureau C# avec Velopack", ce processus peut désormais être extrêmement facile.

Avec Velopack, un outil fantastique conçu pour tout gérer, de la création de paquets à l'application de mises à jour, les développeurs peuvent désormais créer, déployer et maintenir leurs applications en utilisant une seule commande - sans pipelines de construction complexes ou de fichiers de configuration interminables.

Dans cet article, nous allons parcourir en détail l'intégralité du tutoriel de 32 minutes de Tim, qui explique comment utiliser Velopack pour transformer une application WPF C# standard en un paquet portable auto-actualisé. Nous verrons également comment il prend en charge les migrations automatiques, la signature de code et la configuration zéro pour de multiples plateformes, tout en maintenant des performances natives.

Introduction : Pourquoi Velopack ?

Tim commence par expliquer que le déploiement et la mise à jour d'applications de bureau ne sont pas forcément difficiles - en fait, ils peuvent être "carrément faciles" Son objectif dans cette vidéo est de montrer comment Velopack peut simplifier le processus en empaquetant une application WPF, en créant un programme d'installation et en activant les mises à jour automatiques avec une configuration minimale.

Il souligne que cela ne se limite pas à WPF - le même processus fonctionne pour WinForms, les applications de console, ou même les logiciels non .NET comme Java, Rust ou C++. Velopack permet de créer des paquets pour presque tous les langages ou frameworks, ce qui en fait l'un des meilleurs frameworks d'installation disponibles aujourd'hui pour les applications multiplateformes.

Création du projet WPF

Tim commence dans Visual Studio 2022, en créant un simple projet WPF nommé DeployDemo. Le projet vise .NET 9, mais comme il le souligne, il fonctionne parfaitement sur les versions plus récentes telles que .NET 10.

Cette première version n'est qu'une petite application destinée à démontrer le processus complet de déploiement et de mise à jour. Bien qu'il utilise WPF, il répète que Velopack fonctionne tout aussi bien pour les applications de bureau multiplateformes, ce qui en fait une solution unique pour tous les types de projets .NET et même non .NET.

Installer Velopack comme outil global

Ensuite, Tim ouvre le terminal et tape :

dotnet tool install -g vpk

Cette commande unique installe Velopack globalement sur le système, ce qui permet aux développeurs d'exécuter des commandes Velopack depuis n'importe où.

Tim appelle cette étape la "sauce secrète", car Velopack prend la sortie du compilateur de votre projet et la transforme en un paquet portable qui se met à jour automatiquement. Cette étape donne à votre application un installateur professionnel et un cadre de mise à jour automatique - tout en un.

Il explique que la ligne de commande ne simplifie pas seulement la configuration, mais s'intègre également facilement dans les pipelines CI/CD, de sorte que les développeurs peuvent automatiser l'emballage, la création de versions et le déploiement sans scripts supplémentaires. La possibilité d'automatiser à l'aide d'une seule commande permet aux développeurs de gagner un temps précieux tout en conservant des versions cohérentes.

Installation du package NuGet Velopack

Dans Visual Studio, Tim ouvre Gérer les paquets NuGet et installe le paquet Velopack.

Il explique que Velopack est le successeur de Squirrel, un cadre d'installation précédemment populaire. Si vous avez utilisé Squirrel, Velopack peut migrer automatiquement votre configuration existante - offrant une fiabilité améliorée, des constructions beaucoup plus rapides et une meilleure compatibilité entre les plateformes.

Velopack peut produire des installateurs de bureau pour Windows, Linux et macOS, prenant en charge divers langages de programmation tels que C#, Rust, C++ et JavaScript. Il s'agit d'un cadre pour le déploiement d'applications multiplateformes qui fonctionne parfaitement sur tous les systèmes.

Tim insiste sur le fait que Velopack est entièrement gratuit - il n'y a pas d'abonnement ou de frais de licence, et pourtant il fournit des cadres d'installation professionnels comparables aux solutions commerciales.

Initialisation de Velopack dans le code

Dans le fichier App.xaml.cs, Tim ajoute un constructeur et initialise Velopack en quelques lignes de code :

new VelopackApp()
    .Build()
    .Run();
new VelopackApp()
    .Build()
    .Run();

Cette configuration zéro connecte immédiatement l'application au cadre de mise à jour automatique de Velopack. Bien que cela ne vérifie pas encore les mises à jour, c'est ce qui permet à Velopack d'être performant lors des étapes ultérieures, lorsqu'il commencera à gérer les mises à jour et les installations.

Tim explique que même si cette configuration est simple, elle est suffisamment puissante pour que l'application se mette à jour automatiquement, garantissant ainsi que les utilisateurs exécutent toujours la dernière version sur l'ordinateur de l'utilisateur final.

Conception de l'interface utilisateur

Avant d'approfondir les mises à jour, Tim construit une interface WPF de base. Il crée une grille et place un bouton "Mise à jour" en haut à droite.

Au départ, un élément mal placé provoque une erreur, mais Tim l'utilise pour rappeler aux spectateurs l'importance de la hiérarchie de la mise en page dans WPF. Une fois corrigée, l'interface de l'application installable est propre et redimensionnable, ce qui montre que Velopack fonctionne parfaitement avec des frameworks populaires tels que WPF.

Il ajoute ensuite un StackPanel contenant une zone de texte (mainTextBox) et un bouton Submit (submitButton). Lorsque l'application est lancée, elle affiche une interface utilisateur minimale et fonctionnelle. Ce petit projet sera ensuite utilisé pour démontrer que les mises à jour sont appliquées automatiquement.

Mise en œuvre du bouton de mise à jour

Tim passe maintenant à la fonctionnalité. Il double-clique sur le bouton Mettre à jour pour générer son événement de clic. Cette traduction deviendra le cœur du cadre de mise à jour automatique.

Il explique que l'on pourrait diviser le processus en trois phases - vérification, téléchargement et application des mises à jour - mais pour cette démo, il combine les trois en un seul événement pour simplifier les choses.

Écrire la logique de mise à jour

Dans MainWindow.xaml.cs, Tim crée un nouveau UpdateManager et le dirige vers un chemin local qui servira de source de mise à jour :

var mgr = new UpdateManager(@"C:\temp\DeployDemoServer");
var mgr = new UpdateManager(@"C:\temp\DeployDemoServer");

Dans le monde réel, ce chemin peut être une URL HTTPS pour une application externe, ou un partage de fichier local pour une distribution interne. Velopack ne nécessite pas de configuration lourde - il fonctionne de manière transparente dans les deux environnements.

Ensuite, Tim ajoute du code asynchrone pour gérer la vérification des versions et les mises à jour :

var newVersion = await mgr.CheckForUpdatesAsync();

if (newVersion == null)
{
    MessageBox.Show("You are on the latest version.");
    return;
}

await mgr.DownloadUpdatesAsync(newVersion);
await mgr.ApplyUpdatesAndRestartAsync(newVersion);
var newVersion = await mgr.CheckForUpdatesAsync();

if (newVersion == null)
{
    MessageBox.Show("You are on the latest version.");
    return;
}

await mgr.DownloadUpdatesAsync(newVersion);
await mgr.ApplyUpdatesAndRestartAsync(newVersion);

Ce code vérifie la présence d'une version plus récente, télécharge les paquets delta et les applique instantanément. Velopack s'occupe de tout - l'application redémarre automatiquement une fois la mise à jour terminée.

Il explique que si cette démo utilise un clic sur un bouton, les développeurs peuvent également déclencher ces mises à jour de manière silencieuse ou automatique au démarrage, tout comme les logiciels professionnels.

Publication de l'application

Tim montre ensuite comment publier la première version. À l'aide du terminal situé dans le dossier du projet, il exécute :

dotnet publish --self-contained -r win-x64 -o ./publish

Cette traduction génère une version autonome qui inclut le moteur d'exécution .NET. Cela signifie que l'application fonctionnera sur l'ordinateur de n'importe quel utilisateur final sans qu'il soit nécessaire d'installer .NET séparément.

Tim montre le résultat compilé - le fichier DeployDemo.exe - dans le répertoire de publication, confirmant qu'il s'exécute correctement. Pour l'instant, il ne s'agit que de la sortie du compilateur, pas encore d'une version packagée et installable.

Création du paquet d'installation

Pour transformer les fichiers publiés en un programme d'installation déployable, Tim utilise la commande pack de Velopack :

vpk pack --pack-id DeployDemo --pack-version 1.0.0 --pack-directory ./publish

Cela crée un dossier Releases contenant tous les fichiers nécessaires, y compris les exécutables d'installation.

Tim copie les fichiers de version dans un dossier "serveur" local. L'exécution du fichier d'installation généré installe complètement l'application - il crée des raccourcis, ajoute une entrée dans la liste des programmes et fonctionnalités et fournit une expérience d'installation native sans autorisations supplémentaires ni invites UAC.

L'application est désormais une application officielle installable, propulsée par Velopack.

Mise à jour de l'application

Pour simuler une mise à jour, Tim modifie le code du bouton Soumettre :

MessageBox.Show($"Hello {mainTextBox.Text}");
MessageBox.Show($"Hello {mainTextBox.Text}");

Il reconditionne ensuite l'application en répétant les mêmes commandes "publish" et "pack", mais avec un numéro de version actualisé :

vpk pack --pack-id DeployDemo --pack-version 1.0.1 --pack-directory ./publish

Velopack crée automatiquement des paquets delta (minuscules fichiers différentiels pour les utilisateurs existants) et un paquet complet pour les nouvelles installations. Tim note que si le paquet complet pèse environ 63 Mo, le paquet delta ne pèse que 132 Ko - preuve que Velopack est nettement plus rapide et plus efficace que d'autres outils ou cadres d'installation.

Il copie les nouvelles versions dans le dossier du serveur, créant ainsi des versions pour la version 1.0.1.

Application de la mise à jour

Tim rouvre l'application installée et clique sur le bouton "Mise à jour". En quelques secondes, Velopack télécharge et applique la mise à jour 1.0.1 - en redémarrant automatiquement l'application.

Lorsqu'il tape son nom et qu'il appuie sur "Submit", l'écran affiche désormais "Hello Tim". Le cadre de mise à jour a fonctionné à la vitesse de l'éclair, ce qui confirme que Velopack s'intègre facilement et gère parfaitement l'ensemble du cycle de mise à jour.

Il souligne que les développeurs pourraient héberger ces versions sur Azure, dans un espace de stockage de fichiers ou dans un référentiel web, et que la même logique de mise à jour automatique fonctionnerait toujours sous Windows, Linux ou macOS.

Maintenance simplifiée et flexibilité

Tim souligne comment ce processus rend la maintenance des applications de bureau extrêmement facile. Les développeurs peuvent déployer des outils internes ou des logiciels publics avec une fonctionnalité de mise à jour automatique complète en utilisant une configuration minimale et sans dépendances externes.

Velopack offre une API familière aux développeurs .NET et prend en charge toutes les étapes :

  • Construction de publications

  • Création de paquets

  • Création de versions

  • Application des mises à jour

  • Désinstaller proprement

Tout cela se fait sans nécessiter de pipeline de construction complexe ou de fichiers de configuration profonds.

Tim qualifie Velopack d'outil fantastique qui aide les développeurs à gagner un temps précieux tout en livrant des logiciels soignés et professionnels. Il s'agit d'un cadre pour les mises à jour multiplateformes qui "fonctionne tout simplement"

Désinstallation et suivi des versions

Tim démontre que l'application installée apparaît dans la liste "Désinstaller ou modifier un programme" de Windows, avec la version 1.0.1. La suppression de l'application est transparente - Velopack supprime simplement le dossier, sans laisser de résidu.

Il ajoute que Velopack fonctionne à merveille non seulement pour WPF, mais aussi pour WinForms, UNO Platform et même pour les anciens projets .NET Framework 4.6.2. Il est également compatible avec d'autres frameworks et langages populaires tels que Rust ou JavaScript, ce qui en fait une solution universelle pour les installateurs multiplateformes.

Conclusion

Pour conclure, Tim se dit extrêmement impressionné par les performances de Velopack. En quelques étapes seulement - installation de l'outil, ajout d'une ligne de code et exécution de deux commandes - les développeurs peuvent passer d'un simple projet .NET à une application multiplateforme entièrement installable et auto-mise à jour.

Il remercie chaleureusement les développeurs de Velopack d'avoir réalisé un tel travail d'ingénierie et estime qu'il s'agit probablement du meilleur programme d'installation et de mise à jour pour les applications de bureau multiplateformes disponible aujourd'hui.

Tim termine en rappelant aux spectateurs que tous les détails, les commandes et le code source sont disponibles dans la description de la vidéo. Il encourage les développeurs à discuter d'idées, à demander des fonctionnalités et à contribuer à l'avenir du projet par l'intermédiaire de son dépôt public.

Hero Worlddot related to Déployer et mettre à jour rapidement des applications de bureau en C# avec Velopack
Hero Affiliate related to Déployer et mettre à jour rapidement des applications de bureau en C# avec Velopack

Gagnez plus en partageant ce que vous aimez

Vous créez du contenu pour les développeurs travaillant avec .NET, C#, Java, Python ou Node.js ? Transformez votre expertise en revenu supplémentaire !

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi