Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автоматическое обновление приложения, Скачивание и обновление новых версий ПО 
:(
    Опции темы
VasRip
Дата 10.7.2013, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 16.9.2006
Где: РоссийскаяХохлянд ия

Репутация: нет
Всего: нет



Доброе время суток.

Вопрос в том как эффективно организовать обновление ПО.
Новая версия желательно хранить в Архиве.
Как правильно организовать следующие механизмы:

1) При старте приложения происходила проверка Новой версии ПО.
ну понятно что при старте главной форме в криейт впихнуть. проверку

Как хранить информацию о новой версии ПО?
Толи проверять файлы в конкретной папке на сервере, толи иметь файлик к примеру XML, и его парсить, и качать последнюю там указанную версию.
Если писать версию в имени файла, а в папке обновления будет лежать не одна, а сразу 10 версий как мне пропарсивать все имена всех архивов? 

2) скачать не проблема волшебный IdHTTP рулит.

3)Реализация распаковки замены существующей версии ПО.
Может через батник или отдельную утелитку делать  для всех этих дел.


По делитель мыслями и опытом реализации таких вот моментов.

За рание СПС
PM MAIL   Вверх
Amp
Дата 10.7.2013, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



Я делал так. Завел некий update_url по которому программа лезет проверять обновления (хранить его можно в файле конфигурации, чтобы можно было просто поменять при желании). Программа при проверке обновления скачивает файл update_url/info.xml, достает оттуда версию/чейнджлог/доп. информацию, сранивает с текущей версией и уведомляет пользователя в случае необходимости. Если пользователь принимает решение об обновлении, то программа копирует мелкую утилитку для обновления в %TEMP% (если программа сама по себе мелкая, то может саму себя скопировать), передавая ей в качестве параметров update_url/update.zip и путь по которому следует осуществить распаковку. Запускает ее (с запросом админских прав, если нужно), завершает свою работу. Утилитка скачивает update.zip, проверяет контрольную сумму (считанную из info.xml) распаковывает в указанный каталог его содержимое, удаляет update.zip, запускает основное приложение (возможно с какими-то ключами, чтобы запустить те действия, которые требуется выполнить после обновления). В принципе, если саму утилитку обновлять не планируется, то и в %TEMP% ее можно не копировать. 

Да, еще закладывал в info.xml возможность смены версии формата/структуры оного файла, ограничение минимальной версии X с которой можно обновляться до Y и прочие штуки, в которых пока не было нужды.

Если приложение жирное и модульное, то естественно следует подумать о том как бы его обновлять частями с учетом зависимостей между ними. А если просто жирное, то есть повод задумать о delta-обновлениях между отдельными версиями.
PM MAIL   Вверх
VasRip
Дата 11.7.2013, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 16.9.2006
Где: РоссийскаяХохлянд ия

Репутация: нет
Всего: нет



Ну сам релиз примерно 100 метров не меньше,  в архиве 30 метров. Сам EXE 7 метров. По сути в основном будет обновляться только EXE возможно и другие файлы. 

Ну вот я тоже думаю делать через XML. и наверно дополнительную утилитку которая распакует и заметит все необходимые файлы.  



На каком этапе делать проверку существования новых обновлений? Прога периодически подключается к интернету и тянет новые данные в БД делается это по Клику пользователя.  
Или Делать проверку нового ПО при стягивание данных или при старте самой проги.  В каком месте лучше все таки подобную вещь реализовывать?  



и если это делать в этапе загрузки данных то делать в начале загрузки или в конце загрузки ??


Это сообщение отредактировал(а) VasRip - 11.7.2013, 10:12
PM MAIL   Вверх
Amp
Дата 11.7.2013, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



При старте, а так же дополнительные проверки с некоторой периодичностью на выбор пользователя: раз в день, раз в неделю, раз в месяц и т.п. По-умолчанию я бы конечно проверял при старте и потом ненавязчиво уведомлял. Еще завел бы где-нибудь в меню "Help" пункт "Проверить обновления", чтобы пользователь мог сам это сделать.
PM MAIL   Вверх
VasRip
Дата 11.7.2013, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 16.9.2006
Где: РоссийскаяХохлянд ия

Репутация: нет
Всего: нет



понял. Благодарю Amp
PM MAIL   Вверх
VasRip
Дата 12.7.2013, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 16.9.2006
Где: РоссийскаяХохлянд ия

Репутация: нет
Всего: нет



ЕЩЕ вопрос. Вот момент.      есть функция которая скачивает обновление, успешное это делает. После этого есть два варианта 1) качать новое обновление, и потом их все распаковывать или 2)распаковать скачанное обновления уже после того как все их скачаю.

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

Что посоветуете? 
 
PM MAIL   Вверх
Amp
Дата 12.7.2013, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: нет
Всего: 17



А у тебя их много, обновлений? Почему не хочешь все файлы сложить в один архив? Первый твой вариант уязвим. Скачал ты первый архив с апдейтами, распаковал, скачал следующий - а он либо битый, либо коннект отвалился, либо что-то еще. В итоге твоя программа может оказаться нерабочей, так как часть файлов обновлена, а часть нет. Лучше сразу все слить, проверить и спокойно поочередно распаковать.
PM MAIL   Вверх
VasRip
Дата 12.7.2013, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 16.9.2006
Где: РоссийскаяХохлянд ия

Репутация: нет
Всего: нет



Amp. обновлений не много и каждая версия обновления будет в отдельном архиве. Просто я  придусматриваю случай когда пользователь пропустил не одно  а разу несколько обновлений. Конект я проверяю там все должно быть ровно. А вот целостность архива не проверяю нужно замутить будет. 

Amp  твой вариант посложней будет но надежней наверно.

Тогда что Делать список скачанных файлов и потом этот список по очереди распаковывать?  И потом же по этому списку удалять успешно установленные обновления? 
PM MAIL   Вверх
avg123
Дата 13.7.2013, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.4.2010

Репутация: нет
Всего: нет



Ключевое слово - кумулятивное обновление.
Не надо заставлять юзера качать все пропущенные обновления. Засада такая же как и в твоем первом варианте, Amp тебе всё разъяснил.
Юзер должен при любом количестве пропущенных обновлений скачать только самый последний файл обновления.
И тебе легче, не надо хранить разные версии обновлений.


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0991 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.