Главная » Silverlight » Удаление и обновление приложения вне браузера

0

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

Удалить (деинсталлировать) приложение несложно. Пользователь должен щел­кнуть правой кнопкой мыши в области содержимого (в окне браузера или в отдель­ном окне приложения вне браузера) и выбрать в контекстном меню команду Remove This Application (Удалить это приложение). Появится диалоговое окно, предлагающее подтвердить удаление. Если пользователь щелкнет на кнопке ОК, приложение и ярлык будут удалены. Удаление всегда выполняется по инициативе пользователя, потому что в классе Application соответствующего метода нет.

Обновление — более сложный процесс, чем удаление. В надстройку Silverlight встро­ена процедура автоматической проверки существования новой версии. Обновление вы­полняется путем вызова метода Application.CheckAndDownloadUpdateAsync (). Данный метод запускает асинхронный процесс, который проверяет, есть ли на веб-сервере но­вая версия файла ХАР. Фактический номер версии, используемый при компиляции при­ложения, на этот процесс не влияет. Приведенный ниже код проверяет наличие новых версий при запуске приложения.

private void Application_Startup(object sender,

StartupEventArgs e)

{

if (Application.Current.IsRunningOutOfBrowser) {

// Проверка наличия новых версий

Application.Current.CheckAndDownloadUpdateCompleted

+= Application_CheckAndDownloadUpdateCompleted;

Application.Current.CheckAndDownloadUpdateAsync();

this.RootVisual = new MainPage();

}

else {

this-RootVisual = new InstallPage();

}

}

Примечание. Компания Microsoft рекомендует вызывать метод ChackAndDownloadUpdateAsync О в ответ на какое-либо действие пользователя (например, щелчок на кнопке Обновить). Можно также задать проверку наличия новых версий при запуске приложения.

Если сетевое соединение включено, веб-сервер активен и на сервере находит­ся новый файл ХАР, приложение автоматически загрузит его и сгенерирует событие Application.CheckAndDownloadUpdateCompleted.

После вызова метода CheckAndDownloadUpdateAsync О , пользователь не может отменить обновление, в Silverlight нет никаких средств для этого. Кроме того, при­ложение может проверить наличие новых версий, только вызвав метод Check­AndDownloadUpdateAsync (), в результате чего новая версия будет установлена. Однако обновление вступает в силу только после закрытия и повторного запуска приложения.

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

private void Application_CheckAndDownloadUpdateCompleted( object sender,

CheckAndDownloadUpdateCompletedEventArgs e)

{

if (e.UpdateAvailable) {

MessageBox.Show("Установлена новая версия. " +

"Перезапустите приложение."); // Здесь можно ввести код вызова пользовательского // метода в MainPage, который отключает интерфейс

else if (е.Error != null && е.Error is PlatformNotSupportedException)

{

MessageBox. Show ("Есть новые версии приложения,  + "однако для их применения необходима новая" + "версия Silverlight. " +

"Посетите сайт http://silverlight.net для " + " обновления Silverlight.");

}

}

Для тестирования процедуры обновления создайте веб-сайт ASP.NET (см. главу 1). Он необходим, потому что Silverlight поддерживает загрузку обновленных версий только с веб-сервера. Загрузить их с локальной файловой системы невозможно. Однако про­тестировать процедуру обновления с помощью локального компьютера все же можно. Программа Visual Studio создает на локальном компьютере тестирующий веб-сервер и выбирает для него случайный номер порта. Если закрыть и вновь запустить Visual Studio, она выберет для тестирующего сервера новый номер порта, однако установлен­ное до этого приложение вне браузера продолжит применять для проверки обновлений предыдущий номер порта. Попытка обновления завершается неуспешно, причем ника­кие исключения не генерируются и сообщения не выводятся, пока вы вручную не уда­лите и не установите приложение повторно. Чтобы устранить эту проблему, можете развернуть приложение Silverlight на тестирующем сервере IIS на локальном компью­тере или в локальной сети.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии