PDA

Просмотр полной версии : update system


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

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

Evgeniy
10.04.2013, 16:14
вариант

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

lovepsone
10.04.2013, 16:59
вариант

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
Примерчик есть, хоть и не совсем удобочитаемый ( т.к. был писан давно :) ). Вас интересует метод DownloadWorker::ExecuteUpdaterTask() - он дает представление как работал подобный сервис обновлений через HTTP в свое время.

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

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

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