Страница 1 из 1

Updater

СообщениеДобавлено: 12.03.2011 21:11:43
fill-forty
Добрый день.
Есть у меня программа. Она часто дополняет себя разными полезностями и весит много. Люди жалуются, что приходится выкачивать много каждый раз. Просят сделать обновлялку, чтобы сама докачивала обновления. Так будет лучше.

Есть сайт, где будет лежать зеркало программы.

Но нету пока извилин, чтобы додуматься, как мне сделать так, чтобы программа могла обновлять компоненты, через интернет.

Каким мне компонентом воспользоваться, чтобы можно было такое сделать.
К примеру, скачивать "upd_list" и по его списку, выкачивать в папки обновления.

За ранее благодарен. :)

Re: Updater

СообщениеДобавлено: 12.03.2011 22:52:55
devels
Что из себя представляет программа?

Должно быть ядро и плагины или встроенный скриптовой язык. Вы должны обновлять либо плагины (которые весят мало), либо скрипты (которые тоже весят очень мало).

Re: Updater

СообщениеДобавлено: 12.03.2011 23:25:29
Little_Roo
fill-forty писал(а):Но нету пока извилин, чтобы додуматься, как мне сделать так, чтобы программа могла обновлять компоненты, через интернет.
Каким мне компонентом воспользоваться, чтобы можно было такое сделать.

Компоненты чего - Лазаруса ? :?:
И как это - компонент для компонента ???? :?:
Или все ж программу обновлять?? :?:

Самовыражайтесь яснее (с) :D

Re: Updater

СообщениеДобавлено: 13.03.2011 00:52:54
NTFS
Есть два подхода, использовал оба:
1) Встроенный в программу менеджер обновлений
2) Внешняя программа.

В обоих случаях, вводим глобальный номер версии, пусть это будет номер билда. Далее, при выходе новой версии, делаем на сервере файл, в котором храним список измененных файлов и их пути для локальной проги, а также номер версии, в которой они последний раз менялись.
Пример:
bin\MyBestProg1.exe,56
bin\MyBestProg1.dll,55
images\Background.png,33
reports\printTable.frf,54

Программа при запросе обновления читает файл с сервера и определяет, исходя из своей версии, что изменилось. Качает только необходимые файлы.
Так, в примере выше, если запрос делает программа версии 54, то ей нужно только скачать exe-файл и dll. А если 53 - то еще и шаблон отчета.

Если качаем из отдельной программы-обновлялки, то все просто - заменяем локальные файлы на новые и запускаем после программу.
Если менеджер встроен в сам бинарник, то чуть сложнее. Качать нужно в подкаталог, например, inbox. Но с сохранением структуры каталогов. Потом, при следующем старте программы, она обнаруживает в inbox свежие файлы - и запускается, скопировав себя в каталог %TEMP%. Далее, она в этом режиме заменяет ВСЕ файлы в основном каталоге, запускает себя в основном каталоге и закрывается. Все, обновление выполнено.

Эта схема работает у меня в небольшом, но массовом проекте (около сотни рабочих мест на территории края). Все обновляется автоматически.

Re: Updater

СообщениеДобавлено: 14.03.2011 10:58:58
fill-forty
Благодарю за ответы. Много полезного. :)
Но как всегда, сталкиваюсь с пародией на один анекдот. :)

""Это всё понятно, только я никак не могу понять, как ёжики размножаются."" :)
Знаю, это просто, но для меня пока тёмный лес. :)
Меня интересует вопрос, каким "Макаром" (какой компонент для того нужен) программа выкачивает по http, или ftp, нужные мне файлы.
Какой компонент для лазаруса, нужен. Чтобы он мог выкачивать их от туда.
Потому как, выкачать файл даже по сети, это уже совсем иная технология. А у же про глобальную сеть. Вообще молчу.
Это ж разные среды.
Готовым упдайтером пользоваться не хочу. Хочу сделать свой.:)

Надеюсь, сейчас объяснил намного яснее :).

За ранее благодарен...

Re: Updater

СообщениеДобавлено: 14.03.2011 11:14:26
v-t-l

Re: Updater

СообщениеДобавлено: 14.03.2011 11:24:54
Odyssey
v-t-l: Опередил :)

Ararat Synapse (на который как раз указывает ссылка v-t-l). Только это не компонент, а библиотека, в том смысле, что его на форму не положишь, нужно добавлять модуль в uses и вызывать функции, или создавать классы.

Навскидку, нужна будет функция HttpGetBinary из модуля httpsend.

Основной сайт библиотеки (первая ссылка) у меня сейчас почему-то не открывается, возможно, проблемы с маршрутизацией. В этом случае можно скачать библиотеку с Source Forge:
http://sourceforge.net/projects/synalis ... 20Release/

Re: Updater

СообщениеДобавлено: 14.03.2011 12:55:05
fill-forty
Благодарю за ссылки.
Скачал.
Буду ковырять. :D
Как раз восполню прореху в знаниях по подключению всяких сторонних библиотек.
А то всю жизнь с нуля приходилось свои писать :)

Думаю, теперь будет по легче. :)

Re: Updater

СообщениеДобавлено: 14.03.2011 13:26:00
v-t-l
Если брать отсюда http://synalist.svn.sourceforge.net/viewvc/synalist/trunk/?view=tar, то установка и использование сильно упрощаются :D .
Положил в удобное место содержимое архива, открыл один раз в Лазарусе laz_synapse.lpk, нажал Компилировать и все. Потом только в Зависимости проектов добавлять пакет laz_synapse, а в uses нужные модули.