Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.02.2016, 08:40
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию CheckForUpdate

Народ,

За вечер накидал вот такой классик (attached, Delphi 7).

Класс предназначен для проверки наличия новой версии софтины на сайте. На сайт выкладывается маленький xml с описанием текущей версии (собственно верися и описание изменений). Пример xml - version.xml в архиве. Класс берет версию из VersionInfo exe-шника (или можно при создании указать), качает xml с сайта и сверяет их.

Интересует:
1. Советы что можно туда еще приделать и надо ли? (например, парсинг не только своего формата, но и PAD, или вообще задавать путь тегов, или JSON поддерживать, нужна ли поддержка https/ftp/ftps. И т.п.)
2. Сейчас просто сделана проверка по неравенству. Может сделать какой-нить более интересный алгоритм сравнения. Например, сгенерировать большое число из версии и сравнивать его, типа:
1000000*major + 10000*minor + 100*release + build
Вложения
Тип файла: zip CheckForUpdate.zip (7.3 Кбайт, 21 просмотров)
Ответить с цитированием
  #2  
Старый 18.02.2016, 09:53
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

> https/ftp/ftps нужно
> Добавить работу в потоке
> ИМХО, проще смотреть на сервере дату архива с программой, если она "свежее" даты изменения основного файла программы, то качаем архив и распаковываем\устанавливаем
Ответить с цитированием
  #3  
Старый 18.02.2016, 11:51
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
ИМХО, проще смотреть на сервере дату архива с программой, если она "свежее" даты изменения основного файла программы, то качаем архив и распаковываем\устанавливаем
Да, иногда это может понадобиться, когда надо срочно откатить версию назад при обнаружении критической проблемы. Если сравнивать по версии и билду, то придется пересобирать в новый билд, а это может занять больше времени.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #4  
Старый 18.02.2016, 11:56
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

И еще, лучше хранить не весь пакет, а именно патчи (Diff-файлы), дабы юзверь поживее обновлялся, и была меньше нагрузка на сеть
Ответить с цитированием
  #5  
Старый 18.02.2016, 12:02
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Тогда хранить-таки надо весь, только к каждому файлу иметь хеш. А клиент будет выкачивать только то, хеши чего отличаются. Иначе при обновлении с очень старой версии будут проблемы.
Но пока только проверка, скачивания нет. В текущей реализации имеется в виду, что юзер сам будет ставить.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 18.02.2016 в 12:05.
Ответить с цитированием
  #6  
Старый 18.02.2016, 19:30
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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

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

По поводу https/for - видимо, надо переписать на что-то другое, например internetReadFile, что бы с openssl не заворачиваться и не тянуть за собой эти либы. Хотя опять же, сейчас для моих проектов простого http достаточно...

А вообще, кто-то хоть поигрался с этим? Замечания к текущей версии есть (в том функционале как она сейчас)?

Последний раз редактировалось lmikle, 18.02.2016 в 19:35.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:59.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter