Share via


vérifier par programmation la disponibilité de mises à jour d’applications à l’aide de l’API de déploiement ClickOnce

ClickOnce offre deux façons de mettre à jour une application une fois qu’elle est déployée. Dans la première méthode, vous pouvez configurer le déploiement ClickOnce pour rechercher automatiquement les mises à jour à certains intervalles. Dans la deuxième méthode, vous pouvez écrire du code qui utilise la classe ApplicationDeployment pour rechercher des mises à jour en fonction d’un événement, par exemple une requête utilisateur.

Notes

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.

Les procédures suivantes montrent du code pour effectuer une mise à jour programmatique et décrivent également comment configurer votre déploiement ClickOnce pour activer les vérifications de mise à jour par programmation.

Pour mettre à jour une application ClickOnce par programmation, vous devez spécifier un emplacement pour les mises à jour. Il s’agit parfois d’un fournisseur de déploiement. Pour plus d’informations sur la définition de cette propriété, consultez Choisir une stratégie de mise à jour ClickOnce.

Notes

Vous pouvez également utiliser la technique décrite ci-dessous pour déployer votre application à partir d’un emplacement, mais la mettre à jour à partir d’un autre emplacement. Pour plus d’informations, consultez Guide pratique pour spécifier un autre emplacement pour les mises à jour du déploiement.

Pour rechercher les mises à jour par programmation

  1. Créez une application Windows Forms à l’aide de vos outils visuels ou de ligne de commande préférés.

  2. Créez le bouton, l’élément de menu ou tout autre élément d’interface utilisateur que vos utilisateurs doivent sélectionner pour rechercher les mises à jour. À partir du gestionnaire d’événements de cet élément, appelez la méthode suivante pour rechercher et installer des mises à jour.

    private void InstallUpdateSyncWithInfo()
    {
        UpdateCheckInfo info = null;
    
        if (ApplicationDeployment.IsNetworkDeployed)
        {
            ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
    
            try
            {
                info = ad.CheckForDetailedUpdate();
    
            }
            catch (DeploymentDownloadException dde)
            {
                MessageBox.Show("The new version of the application cannot be downloaded at this time. \n\nPlease check your network connection, or try again later. Error: " + dde.Message);
                return;
            }
            catch (InvalidDeploymentException ide)
            {
                MessageBox.Show("Cannot check for a new version of the application. The ClickOnce deployment is corrupt. Please redeploy the application and try again. Error: " + ide.Message);
                return;
            }
            catch (InvalidOperationException ioe)
            {
                MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " + ioe.Message);
                return;
            }
    
            if (info.UpdateAvailable)
            {
                Boolean doUpdate = true;
    
                if (!info.IsUpdateRequired)
                {
                    DialogResult dr = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel);
                    if (!(DialogResult.OK == dr))
                    {
                        doUpdate = false;
                    }
                }
                else
                {
                    // Display a message that the app MUST reboot. Display the minimum required version.
                    MessageBox.Show("This application has detected a mandatory update from your current " + 
                        "version to version " + info.MinimumRequiredVersion.ToString() + 
                        ". The application will now install the update and restart.", 
                        "Update Available", MessageBoxButtons.OK, 
                        MessageBoxIcon.Information);
                }
    
                if (doUpdate)
                {
                    try
                    {
                        ad.Update();
                        MessageBox.Show("The application has been upgraded, and will now restart.");
                        Application.Restart();
                    }
                    catch (DeploymentDownloadException dde)
                    {
                        MessageBox.Show("Cannot install the latest version of the application. \n\nPlease check your network connection, or try again later. Error: " + dde);
                        return;
                    }
                }
            }
        }
    }
    
  3. Générez votre application.

Utiliser Mage.exe pour déployer une application qui recherche des mises à jour par programmation

  • Suivez les instructions pour déployer votre application à l’aide de Mage.exe comme expliqué dans Procédure pas à pas : déployer manuellement une application ClickOnce. Lorsque vous appelez Mage.exe pour générer le manifeste de déploiement, veillez à utiliser le commutateur de ligne de commande providerUrl et à spécifier l’URL où ClickOnce doit rechercher les mises à jour. Si votre application est mise à jour à partir de http://www.adatum.com/MyApp, par exemple, votre appel pour générer le manifeste de déploiement peut ressembler à ceci :

    mage -New Deployment -ToFile WindowsFormsApp1.application -Name "My App 1.0" -Version 1.0.0.0 -AppManifest 1.0.0.0\MyApp.manifest -providerUrl http://www.adatum.com/MyApp/MyApp.application
    

Utiliser Mage.exe pour déployer une application qui recherche des mises à jour par programmation

  • Suivez les instructions pour déployer votre application à l’aide de Mage.exe comme expliqué dans Procédure pas à pas : déployer manuellement une application ClickOnce. Sous l’onglet Options de déploiement, définissez le champ Emplacement de démarrage sur le manifeste de l’application ClickOnce qui doit rechercher les mises à jour. Sous l’onglet Options de mise à jour, décochez la case Cette application doit rechercher des mises à jour.

Sécurité du .NET Framework

Votre application doit disposer d’autorisations de confiance totale pour utiliser la mise à jour par programmation.