Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Языки программирования

Важная информация

Языки программирования Изучаем С++, Sql, php, Lua, Python

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.04.2013, 15:38   #1
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию update system

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

Но этот путь, как по мне, слишком неудобный...
Мб есть у кого предложения как это реализовать по проще?
__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Старый 10.04.2013, 16:14   #2
Evgeniy
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
Evgeniy На верном пути
По умолчанию

вариант
  • http server проверять last-modified заголовок.
  • класть рядом с екзешником файлик version.txt и брать оттуда номер последней доступной версии программы.
Evgeniy вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
lovepsone (12.04.2013)
Старый 10.04.2013, 16:59   #3
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

Цитата:
Сообщение от Evgeniy Посмотреть сообщение
вариант
  • http server проверять last-modified заголовок.
  • класть рядом с екзешником файлик version.txt и брать оттуда номер последней доступной версии программы.
А без файлика никак?
__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Старый 10.04.2013, 17:08   #4
Evgeniy
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
Evgeniy На верном пути
По умолчанию

Ну можешь фанарно по размеру файла проверять...ну это не 100% вариант.
Что бы не качать целиком файл можно проверить либо размер файла, либо скачать маленький файл( version.txt), либо считать заголовки (версию, издателя и т.п.)в самом файле предварительно его скачав, либо запоминать последнее время модификации и запрашивать на сервере где хранится екзешник время модификации файла на сервере ( фтп, хттп и т.п.)
других адекватных вариантов я не вижу.
Evgeniy вне форума   Ответить с цитированием
Старый 10.04.2013, 18:27   #5
Ambal
MaNGOS Dev
 
Аватар для Ambal
 
Регистрация: 22.06.2010
Сообщений: 78
Сказал(а) спасибо: 24
Поблагодарили 71 раз(а) в 25 сообщениях
Ambal Скоро придёт к известности
По умолчанию

идеальный вариант: хранить на сервере файл с перечнем файлов вашей программы и их MD5-суммой. При попытке обновления считываете этот файл и выкачиваете только те файлы, которые появились в списке либо изменили MD5 сумму.
Ambal вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
lovepsone (10.04.2013), tempura (11.04.2013)
Старый 10.04.2013, 20:01   #6
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

А есть исходник с таким примерчиком? Как я понял нужно к каждому файлу вычислять хеш?
__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Старый 10.04.2013, 20:47   #7
Ambal
MaNGOS Dev
 
Аватар для Ambal
 
Регистрация: 22.06.2010
Сообщений: 78
Сказал(а) спасибо: 24
Поблагодарили 71 раз(а) в 25 сообщениях
Ambal Скоро придёт к известности
По умолчанию

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

К сожалению, не могу найти индексный файл, который хранил информацию по файлам проекта
Вложения
Тип файла: rar UpdaterService.rar (39.4 Кб, 337 просмотров)
Ambal вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
lovepsone (10.04.2013), partizanes (11.04.2013)
Старый 10.04.2013, 20:53   #8
Ambal
MaNGOS Dev
 
Аватар для Ambal
 
Регистрация: 22.06.2010
Сообщений: 78
Сказал(а) спасибо: 24
Поблагодарили 71 раз(а) в 25 сообщениях
Ambal Скоро придёт к известности
По умолчанию

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

Известные программы типа DownloadMaster или CCleaner используют подобную схему.
Ambal вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
lovepsone (10.04.2013)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
spline system Mediv Корзина 11 22.03.2013 08:13
dynamic vmap system rsa Отвергнутые патчи 1 04.11.2012 01:02
[10677] Send to creature/etc Update call real diff from last update and use it. newsbot CMaNGOS Commits 0 03.11.2010 06:10
[10089] Change in event system work with pool system. newsbot CMaNGOS Commits 0 21.06.2010 05:22
[10052] Camera System newsbot CMaNGOS Commits 10 16.06.2010 02:33


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


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot