Re[20]: как лучше сделать обновление?
От: Max404.NET Россия http://HrExpress.ru/
Дата: 17.07.09 19:41
Оценка:
Здравствуйте, Kore Sar, Вы писали:

KS>Здравствуйте, Max404.NET, Вы писали:


KS>>>Я говорю про редко обновляемые специфические данные, которые довольно большие. Например курсы всех существующих валют. Нам их нужно обновлять раз в месяц.


MN>>я бы не стал вносить такие данные в структуру программы. Это внешние файлы данных, которые лучше закачивать отдельной функцией, или даже утилитой. Как например многие Апдейтеры делают (типа адобовского) — в фоне закачивают во временную папку, а потом спрашивают у пользователя: "Обновить?". Проверить на запущенность вашей программы, закрыть её, обновить данные (быстро, поскольку уже всё скачано), запустить вашу программу.


KS>Эти данные должны обязательно присутствовать при первом запуске программы, которая может устанавливаться и без интернета. Т.е., как я понял, альтернатив нет? Сохранять файлы программа сможет только в Мои документы?


Что мешает включить в поставку ПО начальный набор данных, а потом обновлять их периодически, как это делают Антивирусы?
Альтернатив много Сохранять программа может в разных местах, но лучше — в правильных.
Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
Re: как лучше сделать обновление?
От: wildwind Россия  
Дата: 17.07.09 20:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть некий софт, состоит из кучи файлов: несколько exe-шек, много dll-лек, много файлов с данными разносортных: картинки, текстовые файлы, двоичные. Надо приделать обновление версий для этого софта.


У нас похожая ситуация. Правда exe всего один, остальное компоненты html интерфейса: картинки, css, js и т.д. exe обновляется редко, остальное часто.

Как организовано обновление.
Программа постоянно общается с сервером по http, и в какой-то момент сервер говорит, что пора обновиться. Дальше программа переходит в режим обновления. В этом режиме программа работает с пользователем как обычно, а отдельный поток загружает обновленные файлы. Для этого он коннектится к ftp серверу, переходит в определенную папку и скачивает индексный файл, в котором список всех файлов и их контрольные суммы. Файлы сверяются с имеющимися по КС, и те, которые отличаются или отсутствуют, скачиваются во временную папку. У скачанных файлов тут же проверяется КС, если неверная, файл скачивается заново. Когда все файлы скачаны и проверены, программа копирует их в рабочую папку и перезагружает интерфейс.

Как публикуются обновления. Обновленные выкладываются на ftp сервер. Запускается простенький perl-скрипт, который рассчитывает контрольные суммы и формирует индексный файл. Затем http-сервер клиентам сообщает клиентам о доступности новой версии.

Так как клиентов очень много, то их обновление (сигнал о новой версии) растягиваем во времени. Плюс ftp серверов несколько, соединения балансируются между ними.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.