Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Языки программирования (http://mangos.ytdb.ru/forumdisplay.php?f=34)
-   -   update system (http://mangos.ytdb.ru/showthread.php?t=6975)

lovepsone 10.04.2013 15:38

update system
 
Всем доброго дня... Поставил задачу себе написать update system для своей проги.
Немного подумавши решил сделать так:
1) ftp соединение;
2) Проверять каждый файл проги по байтам

Но этот путь, как по мне, слишком неудобный...
Мб есть у кого предложения как это реализовать по проще?

Evgeniy 10.04.2013 16:14

вариант
  • http server проверять last-modified заголовок.
  • класть рядом с екзешником файлик version.txt и брать оттуда номер последней доступной версии программы.

lovepsone 10.04.2013 16:59

Цитата:

Сообщение от Evgeniy (Сообщение 31127)
вариант
  • http server проверять last-modified заголовок.
  • класть рядом с екзешником файлик version.txt и брать оттуда номер последней доступной версии программы.

А без файлика никак?

Evgeniy 10.04.2013 17:08

Ну можешь фанарно по размеру файла проверять...ну это не 100% вариант.
Что бы не качать целиком файл можно проверить либо размер файла, либо скачать маленький файл( version.txt), либо считать заголовки (версию, издателя и т.п.)в самом файле предварительно его скачав, либо запоминать последнее время модификации и запрашивать на сервере где хранится екзешник время модификации файла на сервере ( фтп, хттп и т.п.)
других адекватных вариантов я не вижу.

Ambal 10.04.2013 18:27

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

lovepsone 10.04.2013 20:01

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

Ambal 10.04.2013 20:47

Вложений: 1
Примерчик есть, хоть и не совсем удобочитаемый ( т.к. был писан давно :) ). Вас интересует метод DownloadWorker::ExecuteUpdaterTask() - он дает представление как работал подобный сервис обновлений через HTTP в свое время.

К сожалению, не могу найти индексный файл, который хранил информацию по файлам проекта :sorry:

Ambal 10.04.2013 20:53

Как вариант есть еще схема с распространением обновлений в форме полного дистрибутива ПО ( например, инсталятор MSI или InstallShield ). Тогда вы просто выкачиваете инсталятор и запускаете стандартную установку ПО.

Известные программы типа DownloadMaster или CCleaner используют подобную схему.


Текущее время: 23:33. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS