Share via


Programmgesteuertes Suchen nach Anwendungsupdates mit der API für die ClickOnce-Bereitstellung

ClickOnce bietet zwei Möglichkeiten, eine Anwendung nach der Bereitstellung zu aktualisieren. Mit der ersten Methode können Sie die ClickOnce-Bereitstellung so konfigurieren, dass in bestimmten Intervallen automatisch nach Updates gesucht wird. Mit der zweiten Methode können Sie Code schreiben, der die ApplicationDeployment-Klasse verwendet, um basierend auf einem Ereignis, z. B. einer Benutzeranforderung, nach Updates zu suchen.

Hinweis

Die Klasse ApplicationDeployment und die APIs im Namespace System.Deployment.Application werden in .NET Core und .NET 5 und höheren Versionen nicht unterstützt. In .NET 7 wird eine neue Methode für den Zugriff auf Anwendungsbereitstellungseigenschaften unterstützt. Weitere Informationen finden Sie unter Zugreifen auf ClickOnce-Bereitstellungseigenschaften in .NET. .NET 7 unterstützt nicht das Äquivalent von ApplicationDeployment-Methoden.

Die folgenden Verfahren zeigen Code zum Ausführen eines programmgesteuerten Updates und beschreiben außerdem, wie Sie Ihre ClickOnce-Bereitstellung konfigurieren, um programmgesteuerte Überprüfungen auf Updates zu aktivieren.

Um eine ClickOnce-Anwendung programmgesteuert zu aktualisieren, müssen Sie einen Speicherort für Updates angeben. Dies wird manchmal als „Bereitstellungsanbieter“ bezeichnet. Weitere Informationen zum Festlegen dieser Eigenschaft finden Sie unter Auswählen einer ClickOnce-Updatestrategie.

Hinweis

Sie können auch die unten beschriebene Technik verwenden, um Ihre Anwendung von einem Speicherort aus bereitzustellen, sie aber von einem anderen Speicherort aus zu aktualisieren. Weitere Informationen finden Sie unter Vorgehensweise: Angeben eines alternativen Speicherorts für Bereitstellungsaktualisierungen.

So suchen Sie programmgesteuert nach Updates

  1. Erstellen Sie eine neue Windows Forms-Anwendung mit Ihren bevorzugten Befehlszeilen- oder visuellen Tools.

  2. Erstellen Sie eine beliebige Schaltfläche, ein Menüelement oder ein anderes Benutzeroberflächenelement, das Ihre Benutzer auswählen sollen, um nach Updates zu suchen. Rufen Sie im Ereignishandler dieses Elements die folgende Methode auf, um nach Updates zu suchen und diese zu installieren.

    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. Kompilieren Sie Ihre Anwendung.

Verwenden von „Mage.exe“, um eine Anwendung bereitzustellen, die programmgesteuert nach Updates sucht

  • Befolgen Sie die Anweisungen zum Bereitstellen Ihrer Anwendung mithilfe von „Mage.exe“ wie unter Exemplarische Vorgehensweise: Manuelles Bereitstellen einer ClickOnce-Anwendung beschrieben. Wenn Sie „Mage.exe“ aufrufen, um das Bereitstellungsmanifest zu generieren, stellen Sie sicher, dass Sie den Befehlszeilenschalter providerUrl verwenden und die URL angeben, unter der ClickOnce nach Updates suchen soll. Wenn Ihre Anwendung beispielsweise über http://www.adatum.com/MyApp aktualisiert wird, könnte Ihr Aufruf zum Generieren des Bereitstellungsmanifests wie folgt aussehen:

    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
    

Verwenden von „MageUI.exe“, um eine Anwendung bereitzustellen, die programmgesteuert nach Updates sucht

  • Befolgen Sie die Anweisungen zum Bereitstellen Ihrer Anwendung mithilfe von „Mage.exe“ wie unter Exemplarische Vorgehensweise: Manuelles Bereitstellen einer ClickOnce-Anwendung beschrieben. Legen Sie auf der Registerkarte Bereitstellungsoptionen das Feld Startspeicherort auf das Anwendungsmanifest fest, in dem ClickOnce nach Updates suchen soll. Deaktivieren Sie auf der Registerkarte Updateoptionen das Kontrollkästchen Diese Anwendung soll nach Updates suchen.

.NET Framework-Sicherheit

Ihre Anwendung muss über voll vertrauenswürdige Berechtigungen verfügen, um programmgesteuerte Updates verwenden zu können.