Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2012, 16:21   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Авто-Updater не используя Web сервер. Советы.

Вообщем пишу программу авто-обновления и логика ее реализации примерно следующая.
При запуске программа-клиент проверяет если в ветке реестра существует ключ с версией данной программы. Если ее нет она создает новый ключ с версией. Отсчет обновлений начинается с 1.0.0.0 -> Полная версия Программы-Клиент. Программа-Клиент данной версии начинает закачивать все необходимые файлы для нормальной работы программы, полное скачивание программы осуществляется только один раз и данный момент учитывается. При каждом запуске программа-клиент отсылает по сокету текущую версию своей программы и соответственно программа-сервер сверяет пришедшую версию со своей версией. Если версия совпадает (обновлений не требуется) иначе производим новое обновление.
Правильный ли подход хранить данные в реестре? Мне кажется не очень...
Ведь может возникнуть ситуация это переустановка системы, как быть здесь если все данные в реестре потрутся и возникнет проблема с первоначальным скачиванием при версии 1.0.0.0. В любом случае начнется скачивание файлов так как в реестре не будет указана версия после переустановки и Программа-Клиент посчитает что клиент не установлен хотя User может уже обновлен до самой последней версии программы.
Можно конечно хранить данные в XML рядом с программой, но ведь это тоже не совсем безопасно, найдутся так скажем пользователи экспериментаторы... Хотя можно хранить xml в ресурсах и выгружать его в случае если пользователь его удалил.
Скорее всего это самый правильный вариант, но может у Вас тоже есть идеи по поводу этого.

Последний раз редактировалось coNsept; 04.10.2012 в 16:50.
coNsept вне форума Ответить с цитированием
Старый 04.10.2012, 17:07   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

При смене версии далеко не все файлы меняются и требуют обновления. При первом приближении, я бы поступал так:
на сервере текстовый файл со списком файлов программы и для каждого файла контрольная сумма. Этот файл собственно выкачивается и проверяются все файлы на соответствие контрольной сумме. Если сумма не "бьётся", значит файл повреждён, подменен или же устарел и его нужно выкачать с сервера.
Попутно так можно будет "чинить" поломанные программы и автоматически получится лёгкий веб-инсталлятор
ЗЫ. Если файлов сильно много, то можно оптимизировать: сравнивать версию в свойствах exe-файлика с "серверной" или же версию прописать в файле настроек (если пользователь изменит, то будет сам себе злобным буратиной). Я не люблю, когда программы что-то пишут в реестр.
pu4koff вне форума Ответить с цитированием
Старый 04.10.2012, 17:49   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Цитата:
что-то пишут в реестр.
Аналогично. Все гораздо проще оказывается чем я себе накрутил.
Я буду создавать XML файл и записывать туда версию обновления. (Файл будет лежать в папке на совести пользователя, хочет быть злобным буратиной пускай им будет и сам себе сломает удобные условия) Если к примеру пользователь давно не обновлялся и на данный момент версия его программы будет 1.0.0.3 а новая версия клиента 1.0.0.6 просто буду докачивать обновления 1.0.0.4/5/6.
При каждом открытие буду проверять файл на его существование, если его не будет буду выгружать из ресурсов и так же туда же сохранять в случае если будет произведено обновление. Все равно спасибо за идеи, на счет CRC уже планировал это.
coNsept вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авто-копирование строки вниз при заполнении текущей (или авто-отображение скрытой ниже) bygaga Microsoft Office Excel 6 25.11.2011 14:46
Настройка DynDNS Updater Coder12 Работа с сетью в Delphi 1 10.07.2011 18:21
Updater vs Hosting NoSilence Общие вопросы Delphi 1 03.12.2010 01:54
Web-сервер в консольном интерфейсе, используя интерфнйс сокетов sustavovanton Помощь студентам 0 23.10.2009 17:11