Просмотр полной версии : update system
lovepsone
10.04.2013, 15:38
Всем доброго дня... Поставил задачу себе написать update system для своей проги.
Немного подумавши решил сделать так:
1) ftp соединение;
2) Проверять каждый файл проги по байтам
Но этот путь, как по мне, слишком неудобный...
Мб есть у кого предложения как это реализовать по проще?
вариант
http server проверять last-modified заголовок.
класть рядом с екзешником файлик version.txt и брать оттуда номер последней доступной версии программы.
lovepsone
10.04.2013, 16:59
вариант
http server проверять last-modified заголовок.
класть рядом с екзешником файлик version.txt и брать оттуда номер последней доступной версии программы.
А без файлика никак?
Ну можешь фанарно по размеру файла проверять...ну это не 100% вариант.
Что бы не качать целиком файл можно проверить либо размер файла, либо скачать маленький файл( version.txt), либо считать заголовки (версию, издателя и т.п.)в самом файле предварительно его скачав, либо запоминать последнее время модификации и запрашивать на сервере где хранится екзешник время модификации файла на сервере ( фтп, хттп и т.п.)
других адекватных вариантов я не вижу.
идеальный вариант: хранить на сервере файл с перечнем файлов вашей программы и их MD5-суммой. При попытке обновления считываете этот файл и выкачиваете только те файлы, которые появились в списке либо изменили MD5 сумму.
lovepsone
10.04.2013, 20:01
А есть исходник с таким примерчиком? Как я понял нужно к каждому файлу вычислять хеш?
Примерчик есть, хоть и не совсем удобочитаемый ( т.к. был писан давно :) ). Вас интересует метод DownloadWorker::ExecuteUpdaterTask() - он дает представление как работал подобный сервис обновлений через HTTP в свое время.
К сожалению, не могу найти индексный файл, который хранил информацию по файлам проекта :sorry:
Как вариант есть еще схема с распространением обновлений в форме полного дистрибутива ПО ( например, инсталятор MSI или InstallShield ). Тогда вы просто выкачиваете инсталятор и запускаете стандартную установку ПО.
Известные программы типа DownloadMaster или CCleaner используют подобную схему.
vBulletin® v3.8.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot