Комплексное обновление Silverlight приложения
Данная статья наверно будет интересна тем пользователям, которые разрабатывают Silverlight приложения, которые работают как в браузере, так и вне его. В данной статье хочу поделиться опытом обновления таких Silverlight приложений, а так же услышать от читателей свои решения проблем обновления. Если кто-то знает более легкий способ обновления, чем представленный в данной статье, пожалуйста сообщите. Обновление внебраузерных Silverlight приложений: Здесь все просто: достаточно вызвать метод CheckAndDownloadUpdateAsync класса Application И обработать событие CheckAndDownloadUpdateCompleted void App_CheckAndDownloadUpdateCompleted(object sender, CheckAndDownloadUpdateCompletedEventArgs e)
{
if (e.UpdateAvailable)
{
MessageBox.Show("Доступно обновление. Перезапустите приложение для использования новой версии.");
}
else if (e.Error != null && e.Error is PlatformNotSupportedException)
{
MessageBox.Show("Доступно обновление, но требуется более новая версия Silverlight.");
}
} Теперь достаточно скомпилить новую версию приложения и скопировать ее на сервер. Обновление Silverlightприложений работающих в браузере.
Каких-то специальных методов обновления Silverlight не предоставляет, а поэтому браузеры для используют одинаковые правила как для xap файлов, так и например js. Следовательно, обновив свой xap файл на сервере, и начав проверять работоспособность в браузере, Вы вполне возможно увидите старую, закэшированную версию приложения. Чтоб увидеть новую версию можно обновив страницу. Но как быть обычному пользователю! Он же не знает что доступна новая версия, и просто работает со старой версией. Тут возможны два варианта решения: 1) 1) Реализовать свою реализацию проверки использования последней версии приложения, например через вебсервисы. И в случаи использования старой версии, просить пользователя обновить станицу. 2) Изменять имя xap файла при каждом обновлении приложения, не забывая изменять параметр source тега object, размещающий Silverlight приложение. Например: sl1.xap; sl2.xap; sl3.xap…
Изменив имя файла, мы тем самым заставляем браузер загрузит уже новую версию. Для пользователя это обновление абсолютно прозрачно.
Остается один вопрос, как быть с обновлением приложений, которые должны поддерживать оба варианта работы.
Если использовать метод обновления браузерной версии Silverlight при помощи проверки на наличие новой версии, то тут все нормально, каждая версия заставляет пользователя перегрузить приложение, чтоб использовать новую версию.
А вот если использовать метод обновления: изменения имени xap файла, есть небольшой нюанс!
Внеброузерное приложение для проверки обновления ищет тоже название файла, которое было использовано при его установке. Таким образом, после изменения имени xap файл, пользователь в браузере будет использовать новую версию, а пользователь, работающий с внебраузерной версией приложения, будет использовать старую.
Выходом из данной ситуации является сохранение имен файлов, но с обновлением самого файла. Например результатом трех обновлений, будет вот такой список файлов:
Sl1.xap
Sl2.xap
Sl3.xap
Хотя физически это будет один и тот же файл.
Необходимо конечно написать небольшую программку, которая будет обновлять предыдущие xap файлы автоматически.
Данный метод является не очень красивым и приводит к хранению избыточных xap файлов на сервере, поэтому кто знает более простой и правильный способ обновления, пожалуйста проинформируйте.
Вот и все! Спасибо за внимание!
Надеюсь что данная статья будет полезна.
Recent Comments