Выбор стратегии обновления ClickOnce

Обновлен: Ноябрь 2007

ClickOnce может предоставлять автоматические обновления приложения. Приложение ClickOnce периодически читает файл своего манифеста развертывания, чтобы узнать, имеются ли обновления приложения. Если обновление доступно, загружается и выполняется новая версия приложения. Для обеспечения эффективности работы загружаются только измененные файлы.

При разработке приложения ClickOnce необходимо определить стратегию, используемую приложением для проверки доступных обновлений. Существует три базовые стратегии, которые можно использовать: проверка наличия обновлений при запуске приложения, проверка наличия обновлений после запуска приложения (выполнение в фоновом потоке) или предоставление пользовательского интерфейса для обновлений.

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

s22azw1e.alert_note(ru-ru,VS.90).gifПримечание.

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

s22azw1e.alert_note(ru-ru,VS.90).gifПримечание.

В .NET Framework 2.0 и .NET Framework 3.0 при проверке приложением наличия обновлений в любое время, до или после запуска, либо с помощью API-функции System.Deployment.Application необходимо установить параметр deploymentProvider в манифесте развертывания. Элемент deploymentProvider соответствует в Visual Studio полю Местоположение обновления в диалоговом окне Обновления на вкладке Публикация. Это правило опускается в .NET Framework 3.5. Дополнительные сведения см. в разделе Развертывание приложений ClickOnce без подписания заново.

Проверка наличия обновлений после запуска приложения

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

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

Чтобы включить эту стратегию обновления, щелкните После запуска приложения в разделе Выбрать, когда приложение должно проверять наличие обновлений диалогового окна Обновления приложения. Затем укажите интервал обновления в разделе Указать, как часто приложение должно проверять обновления.

Это то же самое, что и изменение в манифесте развертывания элемента Update (Обновление) следующим образом:

   <!-- When to check for updates -->
   <subscription>
      <update>
         <expiration maximumAge="6" unit="hours" />
      </update>
   </subscription>

Проверка наличия обновлений до запуска приложения

Стратегия по умолчанию представляет собой поиск и чтение файла манифеста развертывания до запуска приложения. Используя данную стратегию, приложение пытается найти и прочитать файл манифеста развертывания при каждом запуске приложения. Если обновление доступно, оно загружается и запускается; в противном случае запускается существующая версия приложения.

Данная стратегия оптимальна для высокопроизводительных сетевых подключений; при использовании малопроизводительных подключений задержка в запуске приложения может быть неприемлемо большой.

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

Это то же самое, что и изменение в манифесте развертывания элемента Update (Обновление) следующим образом:

   <!-- When to check for updates -->
   <subscription>
      <update>
         <beforeApplicationStartup />
      </update>
   </subscription>

Перевод обновлений в разряд обязательных

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

s22azw1e.alert_note(ru-ru,VS.90).gifПримечание.

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

Для пометки обновления как обязательного, щелкните Указать минимальную требуемую версию этого приложения в диалоговом окне Обновления приложения, а затем укажите версию публикации (Основная, Второстепенная, Построение, Редакция), задающую минимальный номер версии приложения, которая может быть установлена. Дополнительные сведения см. в разделе Диалоговое окно "Обновления приложения".

Это то же самое, что и установка атрибута minimumRequiredVersion элемента Deployment в манифесте развертывания; например:

   <deployment install="true" minimumRequiredVersion="1.0.0.0">

Задание интервалов обновления

Можно также указать, как часто приложение должно проверять наличие обновлений. Чтобы сделать это, укажите, что приложение проверяет наличие обновлений после запуска, как описано выше в разделе "Проверка наличия обновлений после запуска приложения" этой статьи.

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

Это то же самое, что установка атрибутов maximumAge и unit элемента Update (Обновление) в манифесте развертывания.

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

Предоставление пользовательского интерфейса для обновлений

При использовании этой стратегии разработчик приложения предоставляет пользовательский интерфейс, который дает пользователю возможность выбирать время и частоту проверок приложением наличия обновлений. Например, может предоставляться команда "Check for Updates Now" (Проверить наличие обновлений сейчас) или диалоговое окно "Параметры обновления" с вариантами выбора разных интервалов обновления. Функции интерфейса прикладного программирования (API) ClickOnce образуют основу программирования собственного пользовательского интерфейса обновлений. Дополнительные сведения см. в описании пространства имен System.Deployment.Application.

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

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

Блокирование проверки обновлений

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

Проверку наличия обновлений следует также блокировать, если приложение использует функции API развертывания для выполнения своих собственных обновлений; см. выше в этой статье тему "Предоставление пользовательского интерфейса для обновлений".

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

Проверку наличия обновлений можно также блокировать, удалив из манифеста развертывания тег <Subscription>.

Повышение уровня разрешений и обновления

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

Если используется технология развертывания доверенных приложений, запрос по уровням доверия не будет выводиться. Дополнительные сведения см. в разделе Общие сведения о развертывании доверенных приложений.

См. также

Задачи

Практическое руководство. Управление обновлениями для ClickOnce-приложения

Основные понятия

Выбор стратегии развертывания ClickOnce

Развертывание и безопасность ClickOnce

Выбор стратегии развертывания

Выполнение обновлений приложения службой ClickOnce

Ссылки

Диалоговое окно "Обновления приложения"

System.Deployment.Application

Другие ресурсы

Развертывание ClickOnce для приложений Windows Forms

Развертывание ClickOnce