проверку обновлений для приложения программным способом с помощью функций API развертывания технологии ClickOnce

ClickOnce предоставляет два способа обновления приложения после его развертывания. В первом методе можно настроить развертывание ClickOnce для автоматического проверка для обновлений с определенным интервалом. Во втором методе можно написать код, который использует ApplicationDeployment класс для проверка обновлений на основе события, например запроса пользователя.

Примечание.

Класс ApplicationDeployment и API в System.Deployment.Application пространстве имен не поддерживаются в .NET Core и .NET 5 и более поздних версиях. В .NET 7 поддерживается новый метод доступа к свойствам развертывания приложения. Дополнительные сведения см. в разделе "Свойства развертывания Access ClickOnce" в .NET. .NET 7 не поддерживает эквивалент методов ApplicationDeployment.

В следующих процедурах показан код для выполнения программного обновления, а также описано, как настроить развертывание ClickOnce для включения программных обновлений проверка.

Чтобы обновить приложение ClickOnce программным способом, необходимо указать расположение для обновлений. Иногда это называется поставщиком развертывания. Дополнительные сведения о настройке этого свойства см. в статье "Выбор стратегии обновления ClickOnce".

Примечание.

Вы также можете использовать метод, описанный ниже, для развертывания приложения из одного расположения, но обновления из другого. Дополнительные сведения см. в разделе "Практическое руководство. Указание альтернативного расположения для обновлений развертывания".

Программное проверка обновлений

  1. Создайте новое приложение Windows Forms с помощью предпочитаемой командной строки или визуальных инструментов.

  2. Создайте любую кнопку, пункт меню или другой элемент пользовательского интерфейса, который вы хотите выбрать для проверка обновлений. В обработчике событий этого элемента вызовите следующий метод, чтобы проверка обновлений и установить обновления.

    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. Скомпилируйте приложение.

Использование Mage.exe для развертывания приложения, которое проверка для обновлений программным способом

  • Следуйте инструкциям по развертыванию приложения с помощью Mage.exe, как описано в пошаговом руководстве. Вручную разверните приложение ClickOnce. При вызове Mage.exe для создания манифеста развертывания обязательно используйте параметр providerUrlкомандной строки и укажите URL-адрес, в котором ClickOnce должен проверка обновлений. Если приложение будет обновляться, http://www.adatum.com/MyAppнапример, вызов для создания манифеста развертывания может выглядеть следующим образом:

    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
    

Использование MageUI.exe для развертывания приложения, которое проверка для обновлений программным способом

  • Следуйте инструкциям по развертыванию приложения с помощью Mage.exe, как описано в пошаговом руководстве. Вручную разверните приложение ClickOnce. На вкладке "Параметры развертывания" задайте для поля "Начальное расположение" манифест приложения ClickOnce должен проверка для обновлений. На вкладке "Параметры обновления" снимите флажок "Этот приложение" проверка для обновлений проверка.

Безопасность .NET Framework

Приложение должно иметь разрешения на полное доверие для использования программного обновления.