Udostępnij za pośrednictwem


Porady: sprawdzanie aktualizacji aplikacji w sposób programowy za pomocą wdrażania interfejsu API technologii ClickOnce

ClickOnce oferuje dwa sposoby aktualizacji aplikacji po wdrożeniu.W przypadku pierwszej metody można skonfigurować wdrażania ClickOnce, aby sprawdzić, czy automatyczne aktualizacje w określonych odstępach czasu.W drugiej metody, można napisać kod, który używa ApplicationDeployment klasy, aby sprawdzić, czy są aktualizacje na podstawie zdarzenia, takiego jak żądanie użytkownika.

Następujące procedury Pokaż niektóre kod przeznaczony do wykonywania aktualizacji programowych i również opisano, jak skonfigurować Twoje wdrażania ClickOnce, aby włączyć testy aktualizacja programowych.

Do aktualizacji aplikacji ClickOnce programowo, należy określić lokalizację dla aktualizacji.Jest to czasem nazywane dostawcy wdrażania.Aby uzyskać więcej informacji na temat ustawiania tej właściwości, zobacz Wybieranie strategii aktualizacji ClickOnce.

[!UWAGA]

Można również użyć techniki opisane poniżej, aby wdrażanie aplikacji z jednej lokalizacji, ale została zaktualizowana od innej.Aby uzyskać więcej informacji, zobacz Porady: określanie alternatywnej lokalizacji aktualizacji wdrażania.

Aby sprawdzić aktualizacje programowo

  1. Utwórz nową aplikację Windows Forms za pomocą preferowanego narzędzia wiersza polecenia lub wizualne.

  2. Tworzenie niezależnie od przycisku, element menu lub inny element interfejsu użytkownika ma użytkowników, aby zaznaczyć, aby sprawdzić, czy są aktualizacje.Z tego elementu obsługi zdarzeń należy wywołać metodę następujące wyszukać i zainstalować aktualizacje.

    Private Sub InstallUpdateSyncWithInfo()
        Dim info As UpdateCheckInfo = Nothing 
    
        If (ApplicationDeployment.IsNetworkDeployed) Then 
            Dim AD As ApplicationDeployment = ApplicationDeployment.CurrentDeployment
    
            Try
                info = AD.CheckForDetailedUpdate()
            Catch dde As DeploymentDownloadException
                MessageBox.Show("The new version of the application cannot be downloaded at this time. " + ControlChars.Lf & ControlChars.Lf & "Please check your network connection, or try again later. Error: " + dde.Message)
                Return 
            Catch ioe As InvalidOperationException
                MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " & ioe.Message)
                Return 
            End Try 
    
            If (info.UpdateAvailable) Then 
                Dim doUpdate As Boolean = True 
    
                If (Not info.IsUpdateRequired) Then 
                    Dim dr As DialogResult = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel)
                    If (Not System.Windows.Forms.DialogResult.OK = dr) Then
                        doUpdate = False 
                    End If 
                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)
                End If 
    
                If (doUpdate) Then 
                    Try
                        AD.Update()
                        MessageBox.Show("The application has been upgraded, and will now restart.")
                        Application.Restart()
                    Catch dde As DeploymentDownloadException
                        MessageBox.Show("Cannot install the latest version of the application. " & ControlChars.Lf & ControlChars.Lf & "Please check your network connection, or try again later.")
                        Return 
                    End Try 
                End If 
            End If 
            End If 
    End Sub
    
    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;
                    }
                }
            }
        }
    }
    
    public:
        void InstallUpdateSync()
        {
            if (ApplicationDeployment::IsNetworkDeployed)
            {
                bool isUpdateAvailable = false;
                ApplicationDeployment^ appDeployment =
                    ApplicationDeployment::CurrentDeployment;
    
                try
                {
                    isUpdateAvailable = appDeployment->CheckForUpdate();
                }
                catch (InvalidOperationException^ ex)
                {
                    MessageBox::Show("The update check failed. Error: {0}",
                        ex->Message);
                    return;
                }
    
                if (isUpdateAvailable)
                {
                    try
                    {
                        appDeployment->Update();
                        MessageBox::Show(
                            "The application has been upgraded, and will now " +
                            "restart.");
                        Application::Restart();
                    }
                    catch (Exception^ ex)
                    {
                        MessageBox::Show("The update failed. Error: {0}",
                            ex->Message);
                        return;
                    }
    
                }
            }
        }
    
  3. Kompilowania aplikacji.

Aby wdrożyć aplikację, która wyszukuje aktualizacje programowo przy użyciu Mage.exe

  • Wykonaj instrukcje dotyczące wdrażania aplikacji przy użyciu Mage.exe, jak wyjaśniono w Wskazówki: ręczne wdrażanie aplikacji ClickOnce.Podczas wywoływania Mage.exe do generowania manifestu wdrażania, upewnij się, że należy użyć przełącznika wiersza polecenia providerUrloraz aby określić adres URL, gdzie ClickOnce należy sprawdzić aktualizacje.Jeśli aplikacja zostanie zaktualizowany z http://www.adatum.com/MyApp, na przykład, zadzwonić do generowania manifestu wdrażania 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
    

Aby wdrożyć aplikację, która wyszukuje aktualizacje programowo przy użyciu MageUI.exe

  • Wykonaj instrukcje dotyczące wdrażania aplikacji przy użyciu Mage.exe, jak wyjaśniono w Wskazówki: ręczne wdrażanie aplikacji ClickOnce.Na Opcje wdrażania kartę, należy ustawić Lokalizacji uruchomić pola do manifest aplikacji ClickOnce należy sprawdzić aktualizacje.Na Opcje aktualizacji kartę, a następnie kliknij polecenie Wyczyść tej aplikacji należy sprawdzić aktualizacje pole wyboru.

Zabezpieczenia

Aplikacja musi mieć uprawnienia pełnego zaufania, aby użyć programistyczny aktualizowanie.

Zobacz też

Zadania

Porady: określanie alternatywnej lokalizacji aktualizacji wdrażania

Koncepcje

Wybieranie strategii aktualizacji ClickOnce

Publikowanie aplikacji ClickOnce