Aracılığıyla paylaş


Nasıl yapılır: program aracılığıyla ClickOnce dağıtımı API'si kullanan uygulama Güncelleştirmeleri denetle

ClickOnce dağıtılmış olan bir uygulamayı güncelleştirmek için iki yol sağlar. İlk yöntemde, güncelleştirmeleri belirli aralıklarla otomatik olarak denetlemek için ClickOnce dağıtımını yapılandırabilirsiniz. İkinci yöntemde, kullanıcı isteği gibi olay tabanlı güncelleştirmeleri denetlemek için ApplicationDeployment sınıfını kullanan kod yazabilirsiniz.

Aşağıdaki yordamlar program güncelleştirmesi gerçekleştirmek için gereken kodu gösterir ve ayrıca program güncelleştirmesi denetimlerini etkinleştirmek için ClickOnce dağıtımını yapılandırma yöntemlerini açıklar.

ClickOnce uygulamasını program aracılığıyla güncelleştirmek için, güncelleştirmelere ait bir konum belirtmeniz gerekir. Bu bazen dağıtım sağlayıcısı olarak adlandırılır. Bu özelliği ayarlama konusunda daha fazla bilgi için, bkz. Bir ClickOnce Güncelleştirme Stratejisi Seçme.

Not

Ayrıca, uygulamanızı bir konumdan dağıtıp başka yerden güncelleştirmek için aşağıda belirtilen tekniği kullanabilirsiniz.Daha fazla bilgi için bkz. Nasıl yapılır: güncelleştirmeleri dağıtım için başka bir konum belirtin.

Program aracılığıyla güncelleştirmeleri denetlemek için

  1. Tercih ettiğiniz görsel veya komut satırı araçlarını kullanarak yeni bir Windows Forms uygulaması oluşturun.

  2. Kullanıcılarınızın güncelleştirmeleri kontrol etmeyi seçmesi için düğme, menü öğesi veya kullanıcı arayüzü öğesi oluşturun. Bu öğeye ait olay işleyicisinden, güncelleştirmeleri yüklemek ve denetlemek için aşağıdaki yöntemi çağırın.

    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. Uygulamanızı derleyin.

Güncelleştirmeleri program aracılığıyla denetleyen bir uygulamayı konuşlandırmak için Mage.exe kullanımı

  • İzlenecek yol: El ile ClickOnce uygulama dağıtma başlığında açıklandığı gibi Mage.exe kullanarak uygulamanızı dağıtmak için yönergeleri takip edin. Dağıtım bildirimi oluşturmak için Mage.exe çağrılırken, komut satırı anahtarı providerUrl kullandığınızdan ve ClickOnce'ın güncelleştirmeleri denetleyeceği URL'yi belirlediğinizden emin olun. Uygulama güncelleştirme yapar, http://www.adatum.com/MyApp, örneğin, dağıtım listesi oluşturmak için aramanız şuna benzeyebilir:

    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
    

Güncelleştirmeleri program aracılığıyla denetleyen bir uygulamayı konuşlandırmak için Mage.exe kullanımı

  • İzlenecek yol: El ile ClickOnce uygulama dağıtma başlığında açıklandığı gibi Mage.exe kullanarak uygulamanızı dağıtmak için yönergeleri takip edin. Dağıtım Seçenekleri sekmesinde, Başlat Konumu alanını ClickOnce güncelleştirmeleri denetlesin olarak ayarlayın. Güncelleştirme seçenekleri sekmesinde Bu uygulama güncelleştirmeleri denetlesin onay kutusu işaretini kaldırın.

Güvenlik

Uygulamanız program güncelleştirmesi kullanmak için tam güven izinlerine sahip olmalıdır.

Ayrıca bkz.

Görevler

Nasıl yapılır: güncelleştirmeleri dağıtım için başka bir konum belirtin

Kavramlar

Bir ClickOnce Güncelleştirme Stratejisi Seçme

Yayımlama ClickOnce uygulamaları