Partager via


Choisir une stratégie de mise à jour ClickOnce

ClickOnce peut fournir des mises à jour automatiques d’application. Une application ClickOnce lit régulièrement son fichier manifeste de déploiement pour voir si les 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 plus d’efficacité, seuls les fichiers modifiés sont téléchargés.

Lors de la conception d’une application ClickOnce, vous devez déterminer la stratégie que l’application utilisera pour rechercher les mises à jour disponibles. Il existe trois stratégies de base que vous pouvez utiliser : 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 (en cours d’exécution dans un thread en arrière-plan) ou la fourniture d’une interface utilisateur pour les mises à jour.

En outre, vous pouvez déterminer la fréquence à laquelle l’application vérifie les mises à jour et vous pouvez effectuer des mises à jour requises.

Note

Les mises à jour d’applications nécessitent une connectivité réseau. Si une connexion réseau n’est pas présente, l’application s’exécute sans vérifier les mises à jour, quelle que soit la stratégie de mise à jour que vous choisissez.

Note

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 à l’aide des <API xref :System.Deployment.Application> , vous devez définir deploymentProvider dans le manifeste de déploiement. L’élément deploymentProvider correspond à Visual Studio au champ Emplacement de mise à jour dans la boîte de dialogue Mises à jour de l’onglet Publier . Cette règle est assouplie dans .NET Framework 3.5. Pour plus d’informations, consultez Déploiement d’applications ClickOnce pour les tests et les serveurs de production sans démission.

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

À l’aide de 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, la prochaine fois que l’utilisateur exécute l’application, il est invité à télécharger et installer la mise à jour.

Cette stratégie fonctionne le mieux pour les connexions réseau à faible bande passante ou pour les applications plus volumineuses qui peuvent nécessiter des téléchargements longs.

Pour activer cette stratégie de mise à jour, cliquez une fois que l’application démarre dans la section Choisir quand l’application doit vérifier la section mises à jour de la boîte de dialogue Mises à jour de l’application. Spécifiez ensuite un intervalle de mise à jour dans la section Spécifier la fréquence à laquelle l’application doit rechercher les mises à jour.

Il s’agit de la modification de 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>

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

La stratégie par défaut consiste à essayer de localiser et de lire le fichier manifeste de déploiement avant le démarrage de l’application. À l’aide de cette stratégie, l’application tente de localiser et de lire le fichier manifeste de déploiement chaque fois que l’utilisateur démarre 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 obligatoire, l’utilisateur a le choix entre mettre à niveau ou démarrer la version existante.

Cette stratégie fonctionne mieux pour les connexions réseau à bande passante élevée ; le délai de démarrage de l’application peut être inacceptable sur les connexions à faible bande passante.

Pour activer cette stratégie de mise à jour, cliquez avant que l’application ne démarre dans la section Choisir quand l’application doit vérifier la section mises à jour de la boîte de dialogue Mises à jour de l’application .

Il s’agit de la modification de l’élément Update dans le manifeste de déploiement comme suit :

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

Note

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.

Effectuer les mises à jour requises.

Il peut arriver que vous souhaitiez demander aux utilisateurs d’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êcherait la version antérieure de votre application de fonctionner correctement. Dans ce cas, vous souhaitez marquer votre mise à jour comme nécessaire et empêcher les utilisateurs d’exécuter la version antérieure.

Note

Bien que vous puissiez 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 de garantir qu’une version antérieure ne peut pas être exécutée. 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 nécessaire, cliquez sur Spécifier une version minimale requise pour cette application dans la boîte de dialogue Mises à jour d’application, puis spécifiez la version de publication (principale, mineure, build, révision), qui spécifie le numéro de version le plus bas de l’application qui peut être installée.

Il s’agit de la même définition de 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écifier les intervalles de mise à jour

Vous pouvez également spécifier la fréquence à laquelle l’application recherche les mises à jour. Pour ce faire, spécifiez que l’application vérifie les mises à jour après le démarrage, comme décrit 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 la fréquence à laquelle l'application doit rechercher des mises à jour dans la boîte de dialogue Mises à jour de l'application.

Il s’agit de la même définition des attributs maximumAge et d’unité de l’élément Update dans le manifeste de déploiement.

Par exemple, vous pouvez vérifier chaque fois que l’application s’exécute, ou une fois par semaine, ou une fois par mois. Si une connexion réseau n’est pas présente à l’heure spécifiée, la vérification de la mise à jour est effectuée la prochaine fois que l’application s’exécute.

Note

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.

Fournir une interface utilisateur pour les mises à jour

Lorsque vous utilisez cette stratégie, le développeur d’applications fournit une interface utilisateur qui permet à l’utilisateur de choisir quand ou à quelle fréquence l’application recherche les mises à jour. Par exemple, vous pouvez fournir une commande « Rechercher les mises à jour maintenant » ou une boîte de dialogue « Paramètres de mise à jour » qui offre des choix pour différents intervalles de mise à jour. Les API de déploiement ClickOnce fournissent une infrastructure pour la programmation de votre propre interface utilisateur de mise à jour. Pour plus d’informations, consultez l’espace de noms System.Deployment.Application.

Note

La classe ApplicationDeployment et les API de l’espace de noms System.Deployment.Application ne sont pas prises en charge dans .NET Core et .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 les propriétés de déploiement Access 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 des mises à jour, comme décrit dans « Blocage de la vérification des mises à jour » dans la section suivante.

Cette stratégie fonctionne mieux quand vous avez besoin de stratégies de mise à jour différentes pour différents utilisateurs.

Bloquer la vérification des mises à jour

Il est également possible d’empêcher votre application de rechercher des mises à jour. Par exemple, vous pouvez avoir une application simple qui ne sera jamais mise à jour, mais vous souhaitez tirer parti de la facilité d’installation fourni par le déploiement ClickOnce.

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

Pour bloquer la vérification des mises à jour, décochez la case à cocher L'application doit vérifier les mises à jour dans la boîte de dialogue Mises à jour de l'application.

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

Élévation d’autorisations et mises à jour

Si une nouvelle version d’une application ClickOnce nécessite un niveau de confiance supérieur à la version précédente, ClickOnce invite l’utilisateur à lui demander s’il souhaite que l’application bénéficie de ce niveau de confiance supérieur. Si l’utilisateur refuse d’accorder le niveau de confiance supérieur, la mise à jour n’est pas installée. ClickOnce invite 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 n’est pas marquée comme nécessaire, l’ancienne version de l’application s’exécute. Toutefois, si la mise à jour est requise, l’application ne s’exécute plus tant que l’utilisateur n’accepte pas le niveau de confiance supérieur.

Aucune demande de niveaux de confiance ne se produira si vous utilisez le déploiement d'applications de confiance. Pour plus d’informations, consultez la vue d’ensemble du déploiement d’applications approuvées.