Обновление приложений по локальной сети с использованием ClickOnce

Пусть есть клиент-серверная система. Причем различных клиентов много, а сервер один. Все они работают как Windows-приложения на платформе .NET. Все они объеденены по локальной сети и находятся на достаточном большом расстоянии друг от друга. Как только выходит новая версия системы, требуется обновить все клиентские приложения. Так возникает задача настройки обновления клиентских приложений через сервер. Одним из путей решения данной задачи является технология ClickOnce. Далее будет рассказано как настроить такое обновления для клиентских приложений через сервер.
Создадим проект WPF приложения. Напишем следующий программный код для главного окна чтобы было удобно видеть версию приложения.
MainWindow.xaml:
<Window x:Class="Application.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ClickOnce" Height="300" Width="300"
Loaded="Window_Loaded"
WindowStartupLocation="CenterScreen">
<TextBlock x:Name="_Version"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="30"/>
</Window>
MainWindow.xaml.cs:
using System.Reflection;
using System.Windows;
namespace Application
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var version = Assembly.GetExecutingAssembly().GetName().Version;
_Version.Text = version.ToString();
}
}
}
Запустим
Теперь приступим к настройке установки и обновления. Откроем свойства проекта и откроем вкладку Publish
Здесь настраиваются параметры развертывания и обновления:
Application Files - настройка файлов которые следует включить в развертывание
Prerequisites - необходимые компоненты для работы приложения (такие как .NET) и способы их загрузки
Updates - параметры обновления приложения
Options - прочие настройки (здесь можно, например, выбрать следует ли создавать ярлык приложения на рабочем столе)
Publish Version - версия развертывания, согласно которой будет происходить обновление
Остановимся подробней на Updates
Здесь настраивается когда следует приложению обновлятся:
- до запуска
- во время работы (при этом обновление установится при следующем запуске приложения)
Также можно заставить приложение обновляться принудительно, для этого нужно указать минимальную версию при которой приложение может запуститься необновленным.
Выберем здесь, чтобы обновление происходило до запуска приложения.
Теперь можно приступить к развертыванию. Для этого в контекстном меню проекта в Solution Explorer жмем Publish, и таким образом загружаем мастер развертывания.
Вбиваем путь - расшаренную в сети папку
Выбираем тип инсталляции из папки и вбиваем путь
Выбираем, что приложение было установлено на локальный компьютер
Жмем Finish. Все инсталляционые файлы копируются в папку указанную на шаге 1. Устанавливаем приложение из папки. Приложение запускается.
Далее нужно проверить обновление. Для этого в AssemblyInfo изменим версию приложения с 1.0.0.0 на 1.0.0.1. А также изменяем версию развертывания и минимальную версию обновления, о которых говорилось выше. Повторяем процедуру развертывания. Запускаем приложение, приложения обращается к расшаренной папке, видит доступную новую версию, предлогает обновиться. Жмем обновиться, приложение обновляется, и запускается уже обновленная версия.
Таким образом можно настроить множество приложений на обновление через единственный компьютер.
Если вернуться к задаче. Теперь нам достаточно будет заменять содержимое папок на одном компьютере - сервере, чтобы все клиентские приложения обновились автоматически.
Ссылка на проект: ClickOnce.zip
Spaniard
22.07.2009 10:38