Russian Qt Forum
Ноябрь 24, 2024, 12:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Автоматичесмкое обновление програмы  (Прочитано 8878 раз)
C.H.
Гость
« : Март 07, 2008, 17:28 »

Привет!
хочю сделать сабж.

надо что бы при запуске программа лезла по http/ftp и проверяла не появилась ли новая версия.
если есть выкачивала ее и уже потом запускала бы новую версию.

даже не знаю с какой стороны подступится.
В Линуксе все понятно, перезаписал банарник и все.
а вот под Виндой себя же перезаписать не получится Грустный

может уже есть готовый open-source проект, я просто плохо гуглю?

Ну естественно написать все это добро на QT
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Март 07, 2008, 19:14 »

Нужно сделать отдельный exe, который и будет все делать. Т.е. твоя софтина лезет в нет и проверяет версию, если есть новая, то вызывается другая твоя прога UpdateMi с параметрами и основная софтина завершается. А вот UpdateMi выкачивает софтину, в цикле удаляет старую версию (цикл нужен чтобы дождаться завершения основной проги) и устанавливает новую.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
« Ответ #2 : Март 07, 2008, 21:16 »

Нужно сделать отдельный exe, который и будет все делать. Т.е. твоя софтина лезет в нет и проверяет версию, если есть новая, то вызывается другая твоя прога UpdateMi с параметрами и основная софтина завершается. А вот UpdateMi выкачивает софтину, в цикле удаляет старую версию (цикл нужен чтобы дождаться завершения основной проги) и устанавливает новую.
Или наоборот, сначала запускается "загрузчик", который проверяет новую версию в нете. Если новой версии нет, то запускаем текущую, иначе скачивает новую и запускаем ее.
Записан
C.H.
Гость
« Ответ #3 : Март 07, 2008, 23:58 »

вы оба правы Улыбающийся
хочется найти готовое решения, а то самому так лень писать Подмигивающий
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Март 08, 2008, 00:00 »

Последний вариант имхо не подходит. Представим ситуацию, что плохой коннект или нет вобще коннекта. При этом юзер будет наблюдать каждый раз тормоз при запуске программы. А многие юзеры - это народ нервный Подмигивающий Лучше чтобы главная программа следила за обновлениями
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
DpoHro
Гость
« Ответ #5 : Март 08, 2008, 01:51 »

Основная программа запускает updater.exe или сама выступает в роли апдейтера производя это в отдельном потоке, но лучше внешняя программа.
updater.exe лезет на фтп и качает новый дистрибутив mydistr.exe, который сам уже все сделает после запуска и завершит работу программы и установит обновление.
У меня дистрибутив проверяет установлено ли приложение на ПК, если нет, то ставит целиком, если да, то обновляет.

Это и просто и надежно. 1 файл, скачался - ставим, не скачался, скачаем в следующий раз...
Записан
Вячеслав
Гость
« Ответ #6 : Март 08, 2008, 20:39 »

Основная программа запускает updater.exe или сама выступает в роли апдейтера производя это в отдельном потоке, но лучше внешняя программа.
updater.exe лезет на фтп и качает новый дистрибутив mydistr.exe, который сам уже все сделает после запуска и завершит работу программы и установит обновление.
У меня дистрибутив проверяет установлено ли приложение на ПК, если нет, то ставит целиком, если да, то обновляет.

Это и просто и надежно. 1 файл, скачался - ставим, не скачался, скачаем в следующий раз...
+1 .
Записан
ритт
Гость
« Ответ #7 : Март 09, 2008, 02:39 »

а меня такой вариант не устроил. что это за "обновление" такое, когда выкачивается весь дистрибутив? такую роскошь могут позволить себе программки с размером дистриба до 3-5 метров...а если 30-50?
Записан
Вячеслав
Гость
« Ответ #8 : Март 09, 2008, 13:33 »

И тож согласен Подмигивающий Для маленьких проектов - атомарный апдейт ..Для монстров с кучей плагинов и перекрестными связями между ними -  пришлось в лоб (по аналогии с дебиановскими пакетами) рисовать нечто вроде метаинформации ( кто зависит от кого(и какой версии) ) Грустный  Далее в отдельном потоке вытаскиваем , вежливо просим юзверя "а можно перегрузиться" и далее старые плагины - в bakup , новые в рабочий каталог и вперед Подмигивающий
Записан
BRE
Гость
« Ответ #9 : Март 10, 2008, 10:46 »

Последний вариант имхо не подходит. Представим ситуацию, что плохой коннект или нет вобще коннекта. При этом юзер будет наблюдать каждый раз тормоз при запуске программы. А многие юзеры - это народ нервный Подмигивающий Лучше чтобы главная программа следила за обновлениями
Если все делать "в лоб", конечно не подходить.  Подмигивающий Вопрос был как в винде перезаписать скачанный .exe. Простой вариант из другого процесса, который все скачает и когда все будет готово, подменит его и запустит. А к проблем коннекта можно добавить еще кучу, типа начали качать, а секретарша решила уйти на обед и выключила машину (делать поддержку докачки?) или программа работает месяцами без перезапуска (обновления есть, а их не кто не проверяет).
Продумывать реализацию нужно под конкретные цели и нужды.
Записан
-QT-
Гость
« Ответ #10 : Март 13, 2008, 11:23 »

Для себя я принял концепцию:
Основной запускающий модуль и куча плугинов. Вся реализация в плагинах.
 Веселый
Загружающий модуль отслеживает в инете новый плагин, спрашивает пользователя "найдено обновление для ..." потом качает его если пользователь согласен установить обновление и просит перегрузить приложение.
Старые версии плагинов сохраняются - поэтому можно откатиться на предидущую версию плагина.
 Непонимающий
Правда еще не закончил с проверкой обновлений через POP3, а так все работает.
Вот еще один подход к обновлению.
Записан
DpoHro
Гость
« Ответ #11 : Апрель 11, 2008, 22:26 »

Да мое решение для небольших приложений...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.