upnova-1

Updater, апдейтер, апдейдор, апдатер, launcher, лаунчер, обновлятор

Сегодня мы поговорим о программе для обновления файлов на стороне клиента или апдейтере, как работают данные программы, какие используются алгоритмы, и как это работает у нас.

Подготовка и запаковка файлов.

Update Builder

В первую очередь апдейтеру нужно знать с какими файлами он будет работать, для этого есть вторая программа для сборки файлов для обновления.

Данная программа не только максимально сжимает файлы с помощью Zip библиотек, а также списывает с файлов контрольные хеш суммы и их рамеры. Для расчета хеш сумм используется алгоритм CRC32 о котором будет рассказано подробнее в следующих топиках. Для файлов генерируется карта файлов в формате xml, для того чтоб апдейтер знал с что же ему предстоит качать.

Карта файлов в UpdaterInfo.xml

Результатом сборки файлов является корневая папка со всеми файлами, сжатыми в архивы, а так же файл UpdateInfo.xml с подробной картой файлов для апдейтера. Именно эти данные и заливаются на хостинг, с которого в последующем и будет читать наш апдейтер.

Загрузка файлов и их обработка.

Каждый апдейтер при обновлении получает карту файлов и начинает сравнивать уже имеющиеся файлы с полученным эталоном. Сначала наш апдейтер проверяет присутствие файла, после проверяет размер файла, если же размер совпадает в ход вступает более долгая операция подсчета контрольной суммы. Таким образом мы гарантируем что файлы будут приведены к эталону, прописанному в файле обновления.

У нас есть информация по файлам, которые не прошли проверку, что же дальше?

Бекапим, качаем, распаковываем, все делаем в одно время.

Для скачивания и распаковки организованно две очереди-конвейера. Они ждут продукты как конвейеры на фабриках. Как только загрузился архив файла он сразу же переходит в очередь на распаковку, что позволяет не ждать пока распакуется скачанный файл, а начать качать следующий.

Скачивание происходит через обычное HTTP, поэтому для хостинга достаточно открыть публичный доступ к папке с подготовленными файлами для апдейта.

После скачивания обязательно проверяем контрольные суммы файлов, потому что мы отвечаем за надёжность и доставку только правильных файлов, в противном случае предпринимаем повторную попытку загрузки.

Итоги:

И так, подводя итог, что же такое апдейтер в 3х пунктах:

  1. Сбор информации по файлам
  2. Проверка файлов по трем уровням
  3. Скачивание и распаковка не прошедших проверку файлов.

Сложно ли это? Думаю, нет, но даже тут есть уйма подводных камней.

Что ж на этом все, спасибо за внимание!

По всем вопросам welcome на форму связи.