Choisir une stratégie de mise à jour ClickOnce

ClickOnce peut fournir des mises à jour d’application automatiques. Une application ClickOnce lit périodiquement son fichier manifeste de déploiement pour vérifier si des mises à jour de l’application sont disponibles. Si disponible, la nouvelle version de l'application est téléchargée et exécutée. Pour des raisons d'efficacité, seuls les fichiers modifiés sont téléchargés.

Lorsque vous concevez une application ClickOnce, vous devez déterminer quelle stratégie l'application utilisera pour vérifier les mises à jour disponibles. Trois stratégies de base sont possibles : la vérification des mises à jour au démarrage de l'application, la vérification des mises à jour après le démarrage de l'application (exécutée dans un thread d'arrière-plan) ou la présentation d'une interface utilisateur destinée aux mises à jour.

De plus, vous pouvez déterminer la fréquence de vérification des mises à jour effectuées par l'application et configurer une mise à jour obligatoire.

Notes

Les mises à jour d'application exigent une connexion au réseau. En l'absence d'une connexion réseau, l'application s'exécute sans vérifier les mises à jour, quelle que soit la stratégie de mise à jour choisie.

Remarque

Dans .NET Framework 2.0 et .NET Framework 3.0, chaque fois que votre application vérifie les mises à jour, avant ou après le démarrage, ou en utilisant les API <xref:System.Deployment.Application>, vous devez définir deploymentProvider dans le manifeste de déploiement. Dans Visual Studio, l’élément deploymentProvider correspond au champ Emplacement de mise à jour dans la boîte de dialogue Mises à jour de l’onglet Publier. Cette règle est atténuée dans .NET Framework 3.5. Pour plus d’informations, consultez Déploiement d’applications ClickOnce pour des serveurs de test et de production sans renonciation.

Recherchez les mises à jour après le démarrage de l’application

Si vous utilisez cette stratégie, l'application tente de localiser et de lire le fichier manifeste de déploiement en arrière-plan pendant l'exécution de l'application. Si une mise à jour est disponible, lors de la prochaine exécution de l'application, l'utilisateur sera invité à télécharger et à installer la mise à jour.

Cette stratégie est tout particulièrement adaptée aux connexions réseau à bande passante restreinte ou aux applications plus importantes, susceptibles de nécessiter de longs téléchargements.

Pour activer cette stratégie de mise à jour, cliquez sur Après le démarrage de l’application dans la section Choisissez à quel moment l’application doit vérifier la disponibilité de mises à jour de la boîte de dialogue Mises à jour des applications. Ensuite, spécifiez un intervalle de mise à jour dans la section Spécifiez à quelle fréquence l’application doit vérifier la disponibilité de mises à jour.

Ceci revient à modifier l’élément Update dans le manifeste de déploiement comme suit :

<!-- When to check for updates -->
<subscription>
   <update>
      <expiration maximumAge="6" unit="hours" />
   </update>
</subscription>

Recherchez les mises à jour avant le démarrage de l’application

La stratégie par défaut est d'essayer de localiser et de lire le fichier manifeste de déploiement avant le démarrage de l'application. Avec cette stratégie, l'application tente de localiser et de lire le fichier manifeste de déploiement chaque fois que l'utilisateur lance l'application. Si une mise à jour n’est pas disponible, la version existante de l’application est démarrée. Si une mise à jour requise est disponible, elle est téléchargée et démarrée. Si une mise à jour est disponible mais n’est pas requise, l’utilisateur a le choix entre mettre à niveau ou démarrer la version existante.

Cette stratégie est particulièrement adaptée aux connexions réseau à large bande passante ; le délai nécessaire au lancement de l'application peut être inacceptable sur des connexions à bande passante restreinte.

Pour activer cette stratégie de mise à jour, cliquez sur Avant le démarrage de l’application dans la section Choisissez à quel moment l’application doit vérifier la disponibilité de mises à jour de la boîte de dialogue Mises à jour des applications.

Ceci revient à modifier l’élément Update dans le manifeste de déploiement comme suit :

<!-- When to check for updates -->
<subscription>
   <update>
      <beforeApplicationStartup />
   </update>
</subscription>

Notes

Pour les applications .NET Core 3.1 et .NET 5 et versions ultérieures, la vérification des mises à jour avant le démarrage de l’application est la seule option de mise à jour prise en charge.

Effectuez les mises à jour requises

Dans certains cas, vous souhaitez obliger les utilisateurs à exécuter une version mise à jour de votre application. Par exemple, vous pouvez apporter une modification à une ressource externe, telle qu'un service Web, qui empêche le fonctionnement correct de la version antérieure de votre application. Dans ce cas, vous souhaitez marquer votre mise à jour comme étant obligatoire et empêcher les utilisateurs d'exécuter la version antérieure.

Notes

Bien qu’il soit possible d’exiger des mises à jour à l’aide des autres stratégies de mise à jour, la vérification Avant le démarrage de l’application est la seule façon d’interdire l’exécution d’une version antérieure. Lorsque la mise à jour obligatoire est détectée au démarrage, l'utilisateur doit accepter la mise à jour ou fermer l'application.

Pour marquer une mise à jour comme étant obligatoire, cliquez sur Spécifiez la version minimale requise pour cette application dans la boîte de dialogue Mises à jour des applications, puis spécifiez la version de publication (Majeure, Mineure, Build, Révision) qui spécifie le numéro de version minimal de l’application qui peut être installée.

Ceci revient à définir l’attribut minimumRequiredVersion de l’élément Deployment dans le manifeste de déploiement. Par exemple :

<deployment install="true" minimumRequiredVersion="1.0.0.0">

Spécifiez les intervalles de mise à jour

Vous pouvez également spécifier la fréquence de vérification des mises à jour de l'application. Pour ce faire, spécifiez l'application devant vérifier les mises à jour après le démarrage comme indiqué dans « Vérification des mises à jour après le démarrage de l'application » plus haut dans cette rubrique.

Pour spécifier l’intervalle de mise à jour, définissez les propriétés Spécifiez à quelle fréquence l’application doit vérifier la disponibilité de mises à jour dans la boîte de dialogue Mises à jour des applications.

Ceci revient à définir les attributs maximumAge et unit de l’élément Update dans le manifeste de déploiement.

Par exemple, vous pouvez souhaiter une vérification à chaque exécution de l'application, une fois par semaine ou une fois par mois. En l'absence d'une connexion réseau au moment spécifié, la vérification de mises à jour est effectuée à la prochaine exécution de l'application.

Notes

Dans ClickOnce pour .NET Core et .NET 5 ou version ultérieure, cette fonctionnalité n’est pas prise en charge. Pour plus d'informations, consultez ClickOnce pour .NET.

Fournissez une interface utilisateur pour les mises à jour

Avec cette stratégie, le développeur de l'application fournit une interface utilisateur qui permet à l'utilisateur de choisir le moment ou la fréquence de vérification des mises à jour. Par exemple, vous pouvez fournir une commande "Vérifier les mises à jour maintenant" ou une boîte de dialogue "Paramètres de mise à jour" avec un choix d'intervalles de mise à jour différents. Les API de déploiement ClickOnce fournissent un cadre pour la programmation de votre propre interface utilisateur de mise à jour. Pour plus d'informations, consultez l'espace de noms System.Deployment.Application.

Remarque

La classe ApplicationDeployment et les API de l’espace de noms System.Deployment.Application ne sont pas prises en charge dans .NET Core, .NET 5 et les versions ultérieures. Dans .NET 7, une nouvelle méthode d’accès aux propriétés de déploiement d’application est prise en charge. Pour plus d’informations, consultez Accéder aux propriétés de déploiement ClickOnce dans .NET. .NET 7 ne prend pas en charge l’équivalent des méthodes ApplicationDeployment.

Si votre application utilise des API de déploiement pour contrôler sa propre logique de mise à jour, vous devez bloquer la vérification de la mise à jour comme décrit dans « Blocage de la vérification des mises à jour » dans la section suivante.

Cette stratégie est spécialement appropriée lorsque vous avez besoin de plusieurs stratégies de mise à jour pour des utilisateurs différents.

Bloquez la vérification des mises à jour

Il est également possible de faire en sorte que votre application ne vérifie jamais les mises à jour. Par exemple, vous pouvez posséder une application simple qui ne sera jamais mise à jour, mais vous souhaitez profiter de la facilité d'installation fournie par le déploiement de ClickOnce.

Vous devez également bloquer la vérification de la mise à jour si votre application utilise des API de déploiement pour effectuer ses propres mises à jour ; consultez « Présentation d'une interface utilisateur pour les mises à jour », plus haut dans cette rubrique.

Pour bloquer la vérification des mises à jour, désactivez la case à cocher L’application doit vérifier la disponibilité de mises à jour dans la boîte de dialogue Mises à jour des applications.

Vous pouvez également bloquer la vérification des mises à jour en supprimant la balise <Subscription> dans le manifeste de déploiement.

Élévation d’autorisations et mises à jour

Si une nouvelle version d'une application ClickOnce requiert l'exécution d'un niveau de confiance supérieur à la version précédente, ClickOnce invitera l'utilisateur à indiquer s'il souhaite que ce niveau supérieur de confiance soit accordé à l'application. Si l'utilisateur refuse d'accorder le niveau de confiance supérieur, la mise à jour n'est pas installée. ClickOnce invitera l’utilisateur à réinstaller l’application lors du prochain redémarrage. Si l'utilisateur refuse d'accorder le niveau de confiance supérieur à ce stade et que la mise à jour ne soit pas marquée comme étant obligatoire, l'ancienne version de l'application est exécutée. Toutefois, si la mise à jour est obligatoire, l'application ne sera pas exécutée tant que l'utilisateur n'aura pas accepté le niveau de confiance supérieur.

Si vous utilisez le déploiement d'applications approuvées, vous ne recevrez aucune invite concernant les niveaux de confiance. Pour plus d’informations, consultez Vue d’ensemble du déploiement d’applications approuvées.