Forums.Avtograd.Ru: Авто-обновление программы - Forums.Avtograd.Ru

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Авто-обновление программы битва титанов =)

#1 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Февраль 2008 - 14:36

Начну тему со своих наработок.

Задача была сделать унивесальный автоапдей, который можно использовать в любой программме. Дополнительным фактором была поддержка инсталятора Inno Setup.

Размер модуля AutoUpdate.exe - 50 кб в несжатом виде и 31 в сжатом UPX. Поддерживается обновления по FTP и HTTP. Обновление происходит не из списка файлов, а путём скачивания сетапа и его автоматической установки, что на мой взгляд удобнее, так как при установке можно выполнить какеито дополнительные действия из скриптов установки, например удалить лишние файлы + не надо заморачиваться со списком файлов на сервере, достаточно двух файлов: сетапа и AutoUpdate.ini (информация об обновлении). Также поддерживается вывод списка изменений. При обновлении с версии 1.0 на 1.2 будет выведен список изменений для 1.1 и 1.2; при обновленни с версии 1.1 на 1.2 будет выведен список изменений только для версии 1.2. Пример иформации о версии смотрите в файле Bin\Redist\AutoUpdate.ini. Думаю назначение всех парметров и секций файла понятны из их названий.

Демо и исходник
Только исходник

Для компиляци исходника необходима билиотека KOL (http://kolmck.net/).

Для интеграции в свою программу смотрите:
Bin\Redist\AutoUpdate.ini
Bin\Redist\AutoUpdateUnit.pas
Setup\AutoUpdateTest.iss

Рабочий пример:
Setup\AutoUpdateSetup.exe

Его исходник:
UpdateTest

Как вы решали задачу автообновления программы? Максек мне толдычет про какойта автоапдейт на XML. но пока ссылку не дал. Есть ещё автоапдейт в поставке Embedded Web Browser component package (http://www.bsalsa.com/). он поддерживает XML, но я не знаю поддерживает ли он FTP.
0


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Другие ответы в этой теме

#2 Пользователь офлайн   Exception

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 550
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Февраль 2008 - 14:57

Во-первых, я тебе не Максек. Тут не Таверна тебе.
Во-вторых, вот тебе ссылка на автоапдейтер. Думаю разберешься.
В-третьих, удачи, кодер... Все что надо, тебе дали... Вперед и с песней...
0

#3 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Февраль 2008 - 15:22

1) прости, не хотел обдеть
2) спс) щас посматрел, тоже что и у меня, только на XML и код более корявый)))
3) всё что мне надо, я уже сделал) там кстати всё это на vcl а у меня KOL - меньше размер + универсальность
0

#4 Пользователь офлайн   TRUTHFUL

  • Пользователь
  • PipPip
  • Группа: Модераторы
  • Сообщений: 412
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Февраль 2008 - 18:38

Не итерации, а интеграции. Что какую-то библиотеку KOL с собой таскать надо?
Неужели так сложно вам реализовать автообновление?
На самом деле таскать с собой весь инсталлятор не так уж удобно. Этот способ подходит только для небольшого программного продукта. Для нормального уже нужно обновлять отдельные файлы. К тому же такое обновление более оперативное. Кроме этого есть еще и обновление пропатчиванием существующих файлов. Оно удобно, если изменения небольшие. К примеру файл весит 5 мегабайт, а в новой версии изменились всего 100 байт. Почему бы не исправить просто их на месте. По этому принципу, к примеру, построено обновление VS2005 SP1. Я как-то писал подобную вещь. Обновления зачастую получаются очень компактными.
Истина где-то рядом... Пускай там и остается!
0

#5 Пользователь офлайн   Macro-Y

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 844
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Февраль 2008 - 21:23

Можно обновлять DLLки, оч. удобно.
0

#6 Пользователь офлайн   Exception

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 550
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Февраль 2008 - 21:47

Да не, тут смысл в том что если кто-то воспользуется данной тулзой для обновления своих программных продуктов, то есть тут загвоздка. Допустим сам инсталлятор 10 мегабайт. А надо обновить экзешник мегабайтный. Вот зачем целый инсталлятор качать, непонятно... Тем более не везде всякие анлимы и дешевый трафик. Да и ну не практично все это...
0

#7 Пользователь офлайн   Macro-Y

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 844
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Февраль 2008 - 21:52

Да, инсталлятор это жестковато :) По моему с DLL-ками самы удобный вариант. ИМХО.
0

#8 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Февраль 2008 - 05:55

Просмотр сообщенияTRUTHFUL (6.2.2008, 18:38):

Не итерации, а интеграции. Что какую-то библиотеку KOL с собой таскать надо?
Неужели так сложно вам реализовать автообновление?
На самом деле таскать с собой весь инсталлятор не так уж удобно. Этот способ подходит только для небольшого программного продукта. Для нормального уже нужно обновлять отдельные файлы. К тому же такое обновление более оперативное. Кроме этого есть еще и обновление пропатчиванием существующих файлов. Оно удобно, если изменения небольшие. К примеру файл весит 5 мегабайт, а в новой версии изменились всего 100 байт. Почему бы не исправить просто их на месте. По этому принципу, к примеру, построено обновление VS2005 SP1. Я как-то писал подобную вещь. Обновления зачастую получаются очень компактными.
KOL нужен только для копиляции исходника (например чтото изменили под себя), для рабоы он не нужен, даже для интеграцци ненужен, там есть скомпилированные файлы. KOL кстати весит всего 488 кб. =)
"Этот способ подходит только для небольшого программного продукта." с этим не спорю, я писал с учотом что у пользрователя стоит выделенка, и рамзер сетепа будет не оч. большим, до 5 мб например.
С обновление с помощью патчей есть один недостаток: в итоге полчусается куча патчей, которые нужно качать. Я както писал одну программу, так вот это было ещё во времена модемов, и был гиморой для пользователей, потому что приходилось ставить сначало сетеп, а потом качать кучу патчей и ставить их в определённой последовательности. Когда обновлений многа и они частые и небольшие - этот способ неприемлем, так как получается куча файлов пачей, вобщем всё это довльно криво, потомучто в них можнго запутаться. Другое дело для продуктов больших, обновления для которых выходят редко, вот там это актуально.

пс демку смотрел? =)
0

#9 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Февраль 2008 - 06:11

да, перед тем как свой апдейтер писать, я перыл кучу инфы в инете.
чем мне не понравились готовые, они все шарные.
второй пункт, нужен сервер HTTP со списоком фалов, и их всё время нужно держать в актуальном состоянии = гиморой. мне хотелось простой способ, с минимумом затрат и обновление по FTP, что я и сделал.
=)
0

#10 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Февраль 2008 - 13:41

Таскать весь дистрибутив - накладно, в случае, если проект "много весит", и все, что нужно обновить, к примеру, это исполняемый модуль или одну из DLL-ек.

В своем апдейтере я реализовал выборочное обновление, обновяется только то, что изменилось. При этом, после скачивания, проверяется хэш файла (целосность) и только после этого он замещается. Проверка хэша файла на сервере и на клиенте, в том числе, помогает предотвратить подмену файла или его "модификацию", например вирусом.
<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#11 Пользователь офлайн   TRUTHFUL

  • Пользователь
  • PipPip
  • Группа: Модераторы
  • Сообщений: 412
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Февраль 2008 - 14:53

Просмотр сообщенияup (7.2.2008, 5:55):

KOL нужен только для копиляции исходника (например чтото изменили под себя), для рабоы он не нужен, даже для интеграцци ненужен, там есть скомпилированные файлы. KOL кстати весит всего 488 кб. =)
"Этот способ подходит только для небольшого программного продукта." с этим не спорю, я писал с учотом что у пользрователя стоит выделенка, и рамзер сетепа будет не оч. большим, до 5 мб например.
С обновление с помощью патчей есть один недостаток: в итоге полчусается куча патчей, которые нужно качать. Я както писал одну программу, так вот это было ещё во времена модемов, и был гиморой для пользователей, потому что приходилось ставить сначало сетеп, а потом качать кучу патчей и ставить их в определённой последовательности. Когда обновлений многа и они частые и небольшие - этот способ неприемлем, так как получается куча файлов пачей, вобщем всё это довльно криво, потомучто в них можнго запутаться. Другое дело для продуктов больших, обновления для которых выходят редко, вот там это актуально.

пс демку смотрел? =)

Чем чаще обновление, тем меньше в нем исправлений, так?
То есть можно или обновить 100 и больше раз патчами, либо скачать 1 раз инсталлятор на 5 Мб. Я не думаю что нормально написанный апдатер "запутается" :)
Нет, не смотрел.
Истина где-то рядом... Пускай там и остается!
0

#12 Пользователь офлайн   musashi

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 573
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Февраль 2008 - 22:35

осилил и не смог не ответить

в общем на КОЛ я тоже натыкался, посмотрел на него и плюнул!

решил написать свой апдейтер, но получился он не совсем работоспособным

прога моя требует доработки, на что у меня совсем нету времени, вот сорц: ftp://81.28.160.241/...pdatewizard.rar

делалась на Делфи7

прога использует "Delphi and Kylix Cross-Platform Visual Component Library" класс сокетов, а это означает, что откомпиленная в винде данная прога будет без проблем работать и в *nix!

кто возьмется за доработку, добавьте мои копирайты!
и еще, мое требование, прога должна быть бесплатной, какой она и задумывалась в самом начале!
0

#13 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 15 Февраль 2008 - 22:51

чота я сразу не скачал, а щас файла там этого нет... перезалей, хочу посматреть =)

--

вот меня сковородками закидали... а в Paint.NET по такому принцепу обновление и сделанно, тока там сетап не автоматический.
=)
0

#14 Пользователь офлайн   musashi

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 573
  • Регистрация: 01 Ноябрь 07

Отправлено 16 Февраль 2008 - 13:19

закинул!
0

#15 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 16 Февраль 2008 - 20:59

посматрел. как я понял работает пока только загрузка файлов по параметрам командной строки. непонял, зачем нужно было выносить одну функцию в длл)
0

#16 Пользователь офлайн   musashi

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 573
  • Регистрация: 01 Ноябрь 07

Отправлено 17 Февраль 2008 - 00:45

делалось это с учетом того что можно будет использовать данный модуль из своей программы на прямую!
0

#17 Пользователь офлайн   Explorer

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 700
  • Регистрация: 09 Ноябрь 07

Отправлено 20 Февраль 2008 - 23:55

musashi
Попробуй без кроссплатформенных модулей скомпилировать например в компиляторе Free Pascal. Глядишь и 64-битная программа будет. Вот это уж дейсвительно кроссплатформенность и для Win, Nix и других ОС...
0

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей