- получить с сервера текстовый файл с номером версии
- получить номер версии запущенного приложения
- сравнить и при необходимости провести процесс обновление файлов
- запуск обновления в отдельной (независимой от обновляемых) сборке, причем работа обновляемого приложения должна быть завершена
- динамическое создание (на лету) сборки с алгоритмом обновления, запуск ее через Process.Start, выход из основного приложения
- запуск файла приложения с использованием механизмов службы теневого копирования, что опять таки требует наличия отдельной (внешней) сборки
В любом случае мы приходим к тому, что необходимо будет узнать текущую версию файла, который мы собираемся обновить, чтобы проверить устарел ли он. Сделать это можно следующим способом:
FileVersionInfo fi = System.Diagnostics.FileVersionInfo.GetVersionInfo(path);
версия файла (по частям) содержится тут::
fi.FileMajorPart;
fi.FileMinorPart;
fi.FileBuildPart;
fi.FilePrivatePart;
или тут: fi.FileVersion;
Так же я рекомендую изменять номер версии приложения в файле AssemblyInfo.cs только в атрибуте AssemblyFileVersion. Если номер версии задавать в атрибуте AssemblyVersion, то это будет приводить к полной перекомпиляции всех сборок текущего проекта, которые ссылаются на файл с изменившимся AssemblyVersion, даже если сами сборки не менялись. Если же номер версии задавать в AssemblyFileVersion, то компилироваться будут только изменившиеся сборки.
Версию уже запущенной сборки можно будет получить через Application.ProductVersion.
Комментариев нет:
Отправить комментарий