Udostępnij za pośrednictwem


Programowe sprawdzanie aktualizacji aplikacji przy użyciu interfejsu API wdrażania ClickOnce

Technologia ClickOnce udostępnia dwa sposoby aktualizowania aplikacji po jej wdrożeniu. W pierwszej metodzie można skonfigurować wdrożenie ClickOnce, aby automatycznie sprawdzać dostępność aktualizacji w określonych odstępach czasu. W drugiej metodzie można napisać kod, który używa ApplicationDeployment klasy do sprawdzania dostępności aktualizacji na podstawie zdarzenia, takiego jak żądanie użytkownika.

Uwaga

Klasy ApplicationDeployment i interfejsy API w System.Deployment.Application przestrzeni nazw nie są obsługiwane w wersjach .NET Core i .NET 5 i nowszych. W programie .NET 7 jest obsługiwana nowa metoda uzyskiwania dostępu do właściwości wdrażania aplikacji. Aby uzyskać więcej informacji, zobacz Access ClickOnce deployment properties in .NET (Uzyskiwanie dostępu do właściwości wdrożenia ClickOnce na platformie .NET). Platforma .NET 7 nie obsługuje odpowiedników metod ApplicationDeployment.

W poniższych procedurach pokazano kod do przeprowadzania aktualizacji programowej, a także opisano sposób konfigurowania wdrożenia technologii ClickOnce w celu włączenia kontroli aktualizacji programowych.

Aby programowo zaktualizować aplikację ClickOnce, należy określić lokalizację aktualizacji. Czasami jest to nazywane dostawcą wdrażania. Aby uzyskać więcej informacji na temat ustawiania tej właściwości, zobacz Wybieranie strategii aktualizacji ClickOnce.

Uwaga

Możesz również użyć techniki opisanej poniżej, aby wdrożyć aplikację z jednej lokalizacji, ale zaktualizować ją z innej. Aby uzyskać więcej informacji, zobacz How to: Specify an alternate location for deployment updates (Instrukcje: określanie alternatywnej lokalizacji aktualizacji wdrożenia).

Aby programowo sprawdzić dostępność aktualizacji

  1. Utwórz nową aplikację Windows Forms przy użyciu preferowanych narzędzi wiersza polecenia lub wizualizacji.

  2. Utwórz dowolny przycisk, element menu lub inny element interfejsu użytkownika, który chcesz, aby użytkownicy wybrali opcję sprawdzania dostępności aktualizacji. Z programu obsługi zdarzeń tego elementu wywołaj następującą metodę, aby sprawdzić i zainstalować aktualizacje.

    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. Skompiluj aplikację.

Użyj Mage.exe, aby wdrożyć aplikację, która programowo sprawdza dostępność aktualizacji

  • Postępuj zgodnie z instrukcjami dotyczącymi wdrażania aplikacji przy użyciu Mage.exe zgodnie z opisem w przewodniku: Ręczne wdrażanie aplikacji ClickOnce. Podczas wywoływania Mage.exe w celu wygenerowania manifestu wdrożenia upewnij się, że używasz przełącznika providerUrlwiersza polecenia , a następnie określ adres URL, pod którym clickOnce powinien sprawdzać dostępność aktualizacji. Jeśli aplikacja zostanie zaktualizowana z http://www.adatum.com/MyAppklasy , na przykład wywołanie w celu wygenerowania manifestu wdrożenia może wyglądać następująco:

    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
    

Używanie MageUI.exe do wdrażania aplikacji, która programowo sprawdza dostępność aktualizacji

  • Postępuj zgodnie z instrukcjami dotyczącymi wdrażania aplikacji przy użyciu Mage.exe zgodnie z opisem w przewodniku: Ręczne wdrażanie aplikacji ClickOnce. Na karcie Opcje wdrażania ustaw pole Lokalizacja początkowa na manifest aplikacji ClickOnce powinien sprawdzać dostępność aktualizacji. Na karcie Opcje aktualizacji wyczyść pole wyboru Ta aplikacja powinna sprawdzać dostępność aktualizacji.

Zabezpieczenia.NET Framework

Aby można było korzystać z aktualizacji programowej, aplikacja musi mieć uprawnienia pełnego zaufania.