Programmation PDF Gratuit

Guide Déploiement .NET avec ClickOnce en PDF (Avancé)

Déployez votre application .NET avec ClickOnce. Il s'agit d'un framework de déploiement Microsoft intégré à Visual Studio, permettant la distribution et la mise à jour automatiques d'applications clientes .NET via un installeur web ou local et des manifestes XML. La procédure couvre l'automatisation des mises à jour, la gestion des dépendances CLR et la signature des manifestes pour garantir l'intégrité des publications. Le guide inclut les extraits XML nécessaires, les commandes utiles et les précisions de compatibilité avec Visual Studio 2019 et 2022, ainsi que l'interopérabilité avec .NET Core / .NET 5+ selon les outils et configurations.

Note : Ce guide est conçu pour les développeurs cherchant à automatiser leurs déploiements en entreprise.

Objectifs pédagogiques

  • Publication avec l'assistant Publish — configurer l'emplacement de publication, l'URL de téléchargement et le mode en ligne/hors‑ligne depuis Visual Studio ; préparer le répertoire de publication et générer publish.htm et setup.exe, en tenant compte des types MIME et des contraintes de distribution.
  • Structure des fichiers et mise à disposition — identifier le rôle des fichiers produits (.application, dossier Application Files, manifestes .manifest et fichiers .deploy), organiser le contenu à héberger et créer le lien de téléchargement garantissant le lancement en un clic.
  • Gestion des mises à jour et versioning — paramétrer les recherches de mises à jour, définir une version minimale requise, publier de manière incrémentale et comprendre le mécanisme de hash qui détermine les fichiers téléchargés lors d'une mise à jour.
  • Interopérabilité runtime et signatures — éditer les manifestes pour déclarer des runtimes multiples, signer les manifestes avec un certificat et utiliser mage.exe pour automatiser la génération et la signature.
  • Personnalisation avancée — créer un installeur personnalisé et lier une classe d'installation aux événements de progression pour exécuter des actions pendant l'installation.

Public cible

Développeurs .NET desktop (C# ou VB.NET) et administrateurs applicatifs responsables de la publication et de la maintenance d'applications clientes Windows en entreprise. Le contenu privilégie des procédures opérationnelles adaptées aux équipes en charge des cycles de publication.

Prérequis

  • Connaissance pratique du développement .NET et de Visual Studio (gestion de projets, onglet Publish).
  • Notions d'XML nécessaires pour l'édition des manifestes et du fichier App.config.
  • Compréhension des versions CLR/.NET et concepts de certificats numériques.

Prérequis techniques

  • Visual Studio 2019 ou 2022 avec le workload de développement desktop installé.
  • Accès en écriture au répertoire de publication (réseau, FTP ou espace web) et droits pour configurer les types MIME sur le serveur.
  • Certificat de signature (fichier .pfx) ou accès au magasin de certificats si la signature est requise.
  • Outils en ligne de commande selon le pipeline : msbuild, mage.exe (Windows SDK) et PowerShell pour les scripts d'automatisation.
  • Accès à la documentation MSBuild/Visual Studio pour adapter les propriétés des projets SDK-style ciblant .NET 5/6/7+.

📑 Sommaire du document

  • Introduction
  • Mise en place
  • Publication de l'application ClickOnce
  • Mise à disposition de l'application ClickOnce
  • Paramètres basiques
  • Gestion des mises à jour
  • Utilisation avancée
  • Support de différentes versions du .NET Framework

Pourquoi choisir ce cours ?

Samuel B, praticien confirmé en déploiement d'applications .NET, fournit un guide structuré allant des étapes de base aux ajustements avancés des manifestes et du App.config. Les extraits XML, les procédures de signature et les conseils opérationnels sur les types MIME et la création d'installeurs personnalisés facilitent l'application en contexte professionnel.

Avantages du déploiement ClickOnce

  • Déploiement simplifié pour l'utilisateur final : installation en un clic et mises à jour automatiques sans intervention manuelle complexe, ce qui réduit le support utilisateur.
  • Isolation par utilisateur et faible impact système : les applications sont installées par utilisateur sans nécessiter de privilèges élevés, limitant les risques sur la configuration machine.
  • Gestion fine des mises à jour : publication incrémentale via les manifestes et mécanisme de hash qui minimise le volume téléchargé lors des mises à jour.
  • Intégration aisée aux pipelines CI/CD : possibilité d'automatiser la génération, la signature et la publication des manifestes à partir d'outils en ligne de commande.
  • Adapté aux applications desktop légères distribuées par web, tout en restant compatible avec des scénarios plus contrôlés lorsque la signature et la gestion de certificats sont correctement mises en place.

❓ Foire Aux Questions (FAQ)

Peut-on déclarer plusieurs runtimes CLR dans un manifeste ClickOnce ? Oui. Le manifeste prend en charge la balise <compatibleFrameworks> contenant des éléments <framework targetVersion="..." />. Ces entrées doivent être cohérentes avec la section <startup> du App.config pour assurer le comportement attendu au démarrage.

Quelle est la différence entre un certificat auto-signé et un certificat émis pour la signature ClickOnce ? Un certificat auto-signé permet de signer un manifeste mais n'instaure pas automatiquement la confiance utilisateur ; un certificat émis par une autorité atteste de l'identité de l'éditeur et réduit les avertissements lors de l'installation et des mises à jour.

Comparatif : ClickOnce vs Windows Installer (MSI)

Le tableau ci‑dessous résume les avantages et limites typiques pour orienter le choix de la stratégie de déploiement selon les besoins opérationnels.

Comparaison fonctionnelle entre ClickOnce et MSI
Critère ClickOnce Windows Installer (MSI)
Simplicité de déploiement Installation en un clic, mises à jour incrémentales pilotées par manifestes. Processus d'installation plus complexe, nécessite souvent des autorisations élevées.
Contrôle système Installation isolée par utilisateur, faible impact système. Contrôle fin sur registre, services et privilèges système.
Mises à jour Mises à jour automatiques gérées par les manifestes. Mises à jour via patchs/MSI, adapté aux environnements centralisés.
Personnalisation Limitée (logique d'installation simple). Très personnalisable (custom actions, UI avancée).
Scénarios recommandés Applications desktop légères distribuées par web. Installations centralisées et intégration système.

Utilisation de Mage.exe (Manifest Generation and Editing Tool)

mage.exe permet de créer, modifier et signer les manifestes en ligne de commande, utile pour automatiser des pipelines CI/CD ou effectuer des ajustements avancés avant publication. Exemple d'usage pour signer un manifeste :

mage -Sign MyApp.application -CertFile "monCertificat.pfx" -Password "MonMotDePasse"

Opérations courantes : création d'un manifeste d'application, mise à jour des dépendances et génération d'un manifeste de déploiement. Intégrer mage.exe dans des scripts standardise les publications et réduit les interventions manuelles dans Visual Studio.

Automatisation du déploiement avec PowerShell

Exemple de script PowerShell pour automatiser la compilation, la publication ClickOnce via MSBuild et la signature du manifeste avec mage.exe. Adapter les variables à votre environnement CI/CD et stocker les secrets de façon sécurisée (Azure Key Vault, variables sécurisées CI).

# Variables
$solutionPath = "C:\agent\_work\1\s\MyApp.sln"
$projectFile = "C:\agent\_work\1\s\MyApp\MyApp.csproj"
$publishProfile = "FolderProfile"
$configuration = "Release"
$publishDir = "C:\deploy\MyApp\"
$certFile = "C:\certs\monCertificat.pfx"
$certPwd = ConvertTo-SecureString "MonMotDePasse" -AsPlainText -Force

# Build et Publish via MSBuild
& msbuild.exe $solutionPath /t:Restore,Build,Publish /p:Configuration=$configuration /p:PublishProfile=$publishProfile /p:PublishDir=$publishDir

# Utiliser mage.exe pour signer le manifeste de déploiement
$applicationManifest = Join-Path $publishDir "MyApp.application"
& "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\mage.exe" -Sign $applicationManifest -CertFile $certFile -Password (ConvertFrom-SecureString $certPwd)

# Vérification basique
if (Test-Path $applicationManifest) {
  Write-Host "Publication terminée et manifeste signé : $applicationManifest"
} else {
  Write-Error "Publication échouée : manifeste introuvable"
}

Le script montre la séquence : build, publish et signature. Adapter les chemins et arguments MSBuild pour les projets SDK-style ciblant .NET 5/6/7+ si nécessaire.

Dépannage et résolution rapide des erreurs

Les erreurs fréquentes proviennent de mappages MIME incorrects, de chemins erronés ou d'échecs de signature. Avant toute correction, collecter les logs ClickOnce et reproduire l'échec localement. Vérifier l'intégrité des manifestes, la présence des fichiers .deploy et les en-têtes HTTP renvoyés lors de la récupération des ressources.

  • Erreur 404 sur .application ou .manifest : vérifier le chemin d'hébergement, les permissions de lecture et ajouter les types MIME appropriés. Tester l'accès direct via URL publique.
  • Téléchargement partiel / fichiers corrompus : contrôler les règles de compression et les proxys qui pourraient altérer les binaires ; désactiver la compression pour les extensions ClickOnce ou configurer des exceptions.
  • Échec de signature : valider la validité du certificat, la chaîne de confiance et l'accès à la clé privée sur la machine de build.
  • Problèmes de types MIME sur IIS : ajouter les mappings via le module "MIME Types" ou via web.config (<staticContent>), puis vider les caches du navigateur.
  • Incompatibilité runtime : vérifier <compatibleFrameworks> et la section <startup> du App.config, puis tester le démarrage localement avec la même configuration.

Types MIME recommandés (IIS et serveurs web)

  • .applicationapplication/x-ms-application
  • .manifestapplication/x-ms-manifest
  • .deployapplication/octet-stream (ou application/x-msdownload)
  • .xbapapplication/x-ms-xbap
  • setup.exeapplication/x-msdownload
  • Fichiers binaires (.dll, .exe) → application/octet-stream

Tutoriel : Créer votre premier déploiement ClickOnce

Tutoriel — étapes pour publier une application simple, depuis la configuration du projet jusqu'à la validation du déploiement sur un serveur web. Les étapes servent de feuille de route pour un premier déploiement reproductible et testable en préproduction.

Exemple pratique : Déploiement d'une application WinForms

  1. Préparer le projet — configurer les paramètres de Publication dans Visual Studio (emplacement de publication, mode en ligne/hors‑ligne), vérifier les dépendances et choisir la signature adéquate pour les manifestes.
  2. Publier et héberger — publier vers un répertoire local, vérifier la présence de .application et du dossier Application Files, puis transférer les fichiers vers l'hôte en conservant les types MIME.
  3. Valider l'installation — tester l'accès public au fichier .application, lancer l'installation sur une machine client, vérifier les mises à jour incrémentales et consulter les journaux ClickOnce en cas d'anomalie.

Cas pratique : Application WinForms

Exemple de structure de projet recommandée pour une application WinForms destinée à un déploiement ClickOnce. L'objectif est de séparer clairement le code applicatif, les ressources et les scripts d'automatisation afin de faciliter les publications répétables.

  • MyApp.sln — solution Visual Studio contenant les projets.
  • MyApp/
    • MyApp.csproj — projet WinForms (propriétés Publish configurées ou profile GitHub Actions/MSBuild).
    • Program.cs, FormMain.cs — code applicatif.
    • App.config — configuration runtime et section <startup>.
    • Properties/PublishProfiles/ — profils de publication (.pubxml) pour automatisation.
  • BuildScripts/ — scripts PowerShell ou YAML CI pour build, publish et signature (publish.ps1, azure-pipelines.yml).
  • Certificates/ — stockage sécurisé des certificats (références, non pas les fichiers en clair dans le repo).
  • Deploy/ — artefacts de publication générés (.application, Application Files, setup.exe).

Procédure type : préparer un profil de publication, exécuter MSBuild/Publish en environnement CI, exécuter mage.exe pour signer les manifestes et transférer les artefacts vers l'hôte en conservant les types MIME. Tester l'installation et les mises à jour sur des postes cibles représentatifs.

Comparatif : Assistant Visual Studio vs Ligne de commande

Choix pratique entre l'interface graphique et l'automatisation en ligne de commande selon le contexte opérationnel. Le tableau ci‑dessous synthétise les usages recommandés et les compromis.

Assistant VS vs Ligne de commande
Critère Assistant Visual Studio Ligne de commande (MSBuild / mage.exe)
Usage Déploiements ponctuels, tests rapides. CI/CD, répétabilité et traçabilité.
Automatisation Limitée ; intervention manuelle nécessaire. Entièrement scriptable ; intégré aux pipelines.
Complexité Interface guidée, moins d'erreurs de configuration. Nécessite connaissance des paramètres MSBuild et des scripts.
Recommandation Tests et démonstrations. Production et déploiements récurrents.

Termes à retenir : tutoriel ClickOnce, déploiement WinForms, guide pratique .NET — intégrer ces approches selon le flux de travail et les exigences de conformité. Pour approfondir vos compétences, vous pouvez consulter notre Cours Programmation en langage Python en PDF (Intermédiaire) ou explorer les Cours POO en Java en PDF (Avancé).

Dépannage et ressources

Collecter les logs ClickOnce, reproduire les erreurs localement et valider les manifestes signés. Consulter la documentation Microsoft MSBuild/ClickOnce et les référentiels officiels pour les détails de configuration et les mises à jour de plateforme.