Как обновить программу на C#?
Простым вариантом обновления программы может служить bat файл который будет копировать содержимое сетевой папки в локальную, но после него остается командное окно которое портит общий вид.
Альтернативным способом может быть копирование необходимых файлов самой программой при запуске, но заменить запущенное приложение не получится, поэтому необходимо вынести функциональность которая копирует файлы в отдельный проект и из него после копирования запускать основное приложение.
Сначала настроим глобальные переменные (правильнее их получать из xml файла)
#region Data
// Папка с обновлениями
private String FUpdateFolder = @"srvmyprog";
// Куда копируем
private String FTargetFolder;
// Что запускаем
private String FRunFile = "myprog.exe";
#endregion
А теперь простоскопируем все файлы из указанной сетевой папки и запустим наше основное приложение
privatevoid Form1_Load(object sender, EventArgs e)
{
…
// Проверить доступность сетевого пути
DirectoryInfo _dirUpdate = new DirectoryInfo(FUpdateFolder);
DirectoryInfo _dirMapInfo;
if (!_dirUpdate.Exists)
{
MessageBox.Show("Неудалось получить доступ к " + FUpdateFolder, "Внимание!");
return;
}
pbRuner.Maximum = _dirUpdate.GetFiles().Count();
pbRuner.Value = 0;
// Копируем файлы
try
{
foreach (var file in _dirUpdate.GetFiles())
{
pbRuner.Value++;
file.CopyTo(FTargetFolder + @"" + file.Name, true);
}
}
catch (Exception ex)
{
MessageBox.Show("Один из копируемых файлов скорее всего открыт. n" + ex.ToString(), "Внимание!");
return;
}
// Запустить основную программу
try
{
Process.Start(FTargetFolder + @"" + FRunFile);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
…
}
Таким образом при каждом запуске этого простого приложения будет происходить копирование и запуск указанной в глобальных переменных программы, что позволит нам очень просто следить за актуальностью основной программы.
P.S. Если описанной функциональности не достаточно, то тогда уже стоит обратить внимание на такую технологию как ClickOnce.
P.P.S. Еще ссылки
http://habrahabr.ru/blogs/net/72227/
http://msdn.microsoft.com/ru-ru/vbasic/ms789088.aspx
http://riotlabs.ru/blog/post/ClickOnce_Tecnology.aspx
http://www.techdays.ru/videos/1274.html
Автор материала: FAQdotNet
Мой блог находят по следующим фразам