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

ClickOnceClickOnce может предоставлять автоматические обновления приложения.can provide automatic application updates. Приложение ClickOnceClickOnce периодически читает файл своего манифеста развертывания, чтобы узнать, имеются ли обновления приложения.A ClickOnceClickOnce application periodically reads its deployment manifest file to see whether updates to the application are available. Если обновление доступно, загружается и выполняется новая версия приложения.If available, the new version of the application is downloaded and run. Для обеспечения эффективности работы загружаются только измененные файлы.For efficiency, only those files that have changed are downloaded.

При разработке приложения ClickOnceClickOnce необходимо определить стратегию, используемую приложением для проверки доступных обновлений.When designing a ClickOnceClickOnce application, you have to determine which strategy the application will use to check for available updates. Существует три базовые стратегии, которые можно использовать: проверка наличия обновлений при запуске приложения, проверка наличия обновлений после запуска приложения (выполнение в фоновом потоке) или предоставление пользовательского интерфейса для обновлений.There are three basic strategies that you can use: checking for updates on application startup, checking for updates after application startup (running in a background thread), or providing a user interface for updates.

Кроме того, можно определить частоту проверок приложением наличия обновлений и можно выполнить требуемые обновления.In addition, you can determine how often the application will check for updates, and you can make updates required.

Note

Для обновлений приложений необходима связность узлов сети.Application updates require network connectivity. Если сетевое подключение отсутствует, приложение выполняется без проверки наличия обновлений независимо от выбранной стратегии обновлений.If a network connection is not present, the application will run without checking for updates, regardless of the update strategy that you choose.

Note

В .NET Framework 2.0 и .NET Framework 3.0, каждый раз проверке приложением для обновления, до или после запуска или с помощью <xref:System.Deployment.Application > API-интерфейсов, необходимо задать deploymentProvider в манифесте развертывания.In .NET Framework 2.0 and .NET Framework 3.0, any time your application checks for updates, before or after startup, or by using the <xref:System.Deployment.Application> APIs, you must set deploymentProvider in the deployment manifest. Элемент deploymentProvider соответствует в Visual Studio полю Местоположение обновления в диалоговом окне Обновления на вкладке Публикация. Это правило — нестрогое в .NET Framework 3.5.The deploymentProvider element corresponds in Visual Studio to the Update location field on the Updates dialog box of the Publish tab. This rule is relaxed in .NET Framework 3.5. Дополнительные сведения см. в разделе развертывание ClickOnce приложений для тестирования и рабочих серверов без Resigning.For more information, see Deploying ClickOnce Applications For Testing and Production Servers without Resigning.

Проверять наличие обновлений после запуска приложенияCheck for updates after application startup

Используя эту стратегию, приложение пытается найти и прочитать файл манифеста развертывания в фоновом режиме во время работы приложения.By using this strategy, the application will attempt to locate and read the deployment manifest file in the background while the application is running. Если обновление доступно, при следующем запуске пользователем приложения будет выведен запрос на загрузку и установку обновления.If an update is available, the next time that the user runs the application, he will be prompted to download and install the update.

Эта стратегия оптимальна для малопроизводительных сетевых подключений и для больших приложений, которым могут потребоваться продолжительные загрузки.This strategy works best for low-bandwidth network connections or for larger applications that might require lengthy downloads.

Чтобы включить эту стратегию обновления, щелкните После запуска приложения в разделе Выбрать, когда приложение должно проверять наличие обновлений диалогового окна Обновления приложения.To enable this update strategy, click After the application starts in the Choose when the application should check for updates section of the Application Updates dialog box. Затем укажите интервал обновления в разделе Указать, как часто приложение должно проверять обновления.Then specify an update interval in the section Specify how frequently the application should check for updates.

Это то же самое, что и изменение в манифесте развертывания элемента Обновление следующим образом:This is the same as changing the Update element in the deployment manifest as follows:

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

Проверять наличие обновлений при запуске приложенияCheck for updates before application startup

Стратегия по умолчанию представляет собой поиск и чтение файла манифеста развертывания до запуска приложения.The default strategy is to try to locate and read the deployment manifest file before the application starts. Используя данную стратегию, приложение пытается найти и прочитать файл манифеста развертывания при каждом запуске приложения.By using this strategy, the application will attempt to locate and read the deployment manifest file every time that the user starts the application. Если обновление доступно, оно загружается и запускается; в противном случае запускается существующая версия приложения.If an update is available, it will be downloaded and started; otherwise, the existing version of the application will be started.

Данная стратегия оптимальна для высокопроизводительных сетевых подключений; при использовании малопроизводительных подключений задержка в запуске приложения может быть неприемлемо большой.This strategy works best for high-bandwidth network connections; the delay in starting the application may be unacceptably long over low-bandwidth connections.

Чтобы включить данную стратегию обновления, щелкните До запуска приложения в разделе Выбрать, когда приложение должно проверять наличие обновлений диалогового окна Обновления приложения.To enable this update strategy, click Before the application starts in the Choose when the application should check for updates section of the Application Updates dialog box.

Это то же самое, что и изменение в манифесте развертывания элемента Обновление следующим образом:This is the same as changing the Update element in the deployment manifest as follows:

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

Выполнить требуемые обновленияMake updates required

Возможны случаи, когда необходимо, чтобы пользователи запускали обновленную версию приложения в обязательном порядке.There may be occasions when you want to require users to run an updated version of your application. Например, может потребоваться внесение во внешний ресурс, такой как веб-служба, изменения, которое не позволит правильно работать более ранней версии приложения.For example, you might make a change to an external resource such as a Web service that would prevent the earlier version of your application from working correctly. В этом случае желательно пометить обновление как обязательное и тем самым предотвратить запуск пользователями более ранней версии приложения.In this case, you would want to mark your update as required and prevent users from running the earlier version.

Note

Хотя обновления можно сделать обязательными с помощью других стратегий обновления, проверка До запуска приложения является единственным способом гарантировать, что более старая версия не сможет быть запущена.Although you can require updates by using the other update strategies, checking Before the application starts is the only way to guarantee that an older version cannot be run. Когда при запуске обнаруживается обязательное обновление, пользователь должен либо принять обновление, либо закрыть приложение.When the mandatory update is detected on startup, the user must either accept the update or close the application.

Для пометки обновления как обязательного щелкните Указать минимальную требуемую версию этого приложения в диалоговом окне Обновления приложения, а затем укажите версию публикации (Основная, Второстепенная, Сборка, Редакция), задающую минимальный номер версии приложения, которая может быть установлена.To mark an update as required, click Specify a minimum required version for this application in the Application Updates dialog box, and then specify the publish version (Major, Minor, Build, Revision), which specifies the lowest version number of the application that can be installed.

Это то же самое, что и установка атрибута minimumRequiredVersion элемента Deployment в манифесте развертывания; например:This is the same as setting the minimumRequiredVersion attribute of the Deployment element in the deployment manifest; for example:

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

Укажите интервал обновленияSpecify update intervals

Можно также указать, как часто приложение должно проверять наличие обновлений.You can also specify how often the application checks for updates. Чтобы сделать это, укажите, что приложение проверяет наличие обновлений после запуска, как описано выше в разделе "Проверка наличия обновлений после запуска приложения" этой статьи.To do this, specify that the application check for updates after startup as described in "Checking for Updates After Application Startup" earlier in this topic.

Чтобы задать интервал обновления, установите свойства в разделе Указать, как часто приложение должно проверять обновления в диалоговом окне Обновления приложения.To specify the update interval, set the Specify how frequently the application should check for updates properties in the Application Updates dialog box.

Это то же самое, что установка атрибутов maximumAge и unit элемента Update в манифесте развертывания.This is the same as setting the maximumAge and unit attributes of the Update element in the deployment manifest.

Например, проверка может выполняться при каждом запуске приложения, или один раз в неделю, или один раз в месяц.For example, you may want to check each time the application runs, or one time a week, or one time a month. Если сетевое подключение отсутствует в заданное время, проверка обновления выполняется в следующий указанный момент.If a network connection is not present at the specified time, the update check is performed the next time that the application runs.

Предоставляют пользовательский интерфейс для обновленийProvide a user interface for updates

При использовании этой стратегии разработчик приложения предоставляет пользовательский интерфейс, который дает пользователю возможность выбирать время и частоту проверок приложением наличия обновлений.When using this strategy, the application developer provides a user interface that enables the user to choose when or how often the application will check for updates. Например, может предоставляться команда "Check for Updates Now" (Проверить наличие обновлений сейчас) или диалоговое окно "Параметры обновления" с вариантами выбора разных интервалов обновления.For example, you might provide a "Check for Updates Now" command, or an "Update Settings" dialog box that has choices for different update intervals. API развертывания ClickOnceClickOnce предоставляет основу для программирования собственного пользовательского интерфейса обновлений.The ClickOnceClickOnce deployment APIs provide a framework for programming your own update user interface. Дополнительные сведения см. в описании пространства имен System.Deployment.Application.For more information, see the System.Deployment.Application namespace.

Если приложение использует функции API развертывания для управления собственным алгоритмом обновления, следует блокировать проверку обновлений, как описано в теме "Блокирование проверки обновлений" в следующих разделах.If your application uses deployment APIs to control its own update logic, you should block update checking as described in "Blocking Update Checking" in the following section.

Эта стратегия оптимальна для случаев, когда для разных пользователей требуются разные стратегии обновления.This strategy works best when you need different update strategies for different users.

Блокировать проверку обновленийBlock update checking

Имеется также возможность запрета проверки приложением наличия обновлений.It is also possible to prevent your application from ever checking for updates. Например, может иметься простое приложение, которое никогда не будет обновляться, но необходимо воспользоваться преимуществом простой установки, предлагаемым технологией развертывания ClickOnceClickOnce.For example, you might have a simple application that will never be updated, but you want to take advantage of the ease of installation provide by ClickOnceClickOnce deployment.

Также следует блокировать обновление, проверки, если приложение использует функции API развертывания для выполнения своих собственных обновлений; см. в разделе «Предоставляют пользовательский интерфейс для обновлений» ранее в этом разделе.You should also block update checking if your application uses deployment APIs to perform its own updates; see "Provide a user interface for updates" earlier in this topic.

Чтобы блокировать проверку обновлений, снимите флажок Приложение должно проверять доступные обновления в диалоговом окне "Обновления приложения".To block update checking, clear the The application should check for updates check box in the Application Updates Dialog Box.

Проверку наличия обновлений можно также блокировать, удалив из манифеста развертывания тег <Subscription>.You can also block update checking by removing the <Subscription> tag from the deployment manifest.

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

Если для выполнения новой версии приложения ClickOnceClickOnce требуется более высокий уровень доверия, чем для предыдущей версии, ClickOnceClickOnce запрашивает у пользователя, следует ли предоставить приложению этот более высокий уровень доверия.If a new version of a ClickOnceClickOnce application requires a higher level of trust to run than the previous version, ClickOnceClickOnce will prompt the user, asking him if he wants the application to be granted this higher level of trust. Если пользователь не может гарантировать высокий уровень доверия, обновление не будет установлено.If the user declines to grant the higher trust level, the update will not install. При следующем перезапуске ClickOnceClickOnce снова запросит у пользователя разрешение на установку приложения.ClickOnceClickOnce will prompt the user to install the application again when it is next restarted. Если на этом этапе пользователь отклонит предоставление более высокого уровня доверия, и обновление не помечено как обязательное, запустится старая версия приложения.If the user declines to grant the higher level of trust at this point, and the update is not marked as required, the old version of the application will run. Однако если обновление является обязательным, приложение не запустится повторно до тех пор, пока пользователь не разрешит предоставление более высокого уровня доверия.However, if the update is required, the application will not run again until the user accepts the higher trust level.

Если используется технология развертывания доверенных приложений, запрос по уровням доверия не будет выводиться.No prompting for trust levels will occur if you use Trusted Application Deployment. Для получения дополнительной информации см. раздел Общие сведения о развертывании доверенных приложений.For more information, see Trusted application deployment overview.

См. такжеSee also

<XRef:System.Deployment.Application ><xref:System.Deployment.Application>