![]() |
|
![]() ![]() ![]() |
|
VasRip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 16.9.2006 Где: РоссийскаяХохлянд ия Репутация: нет Всего: нет |
Доброе время суток.
Вопрос в том как эффективно организовать обновление ПО. Новая версия желательно хранить в Архиве. Как правильно организовать следующие механизмы: 1) При старте приложения происходила проверка Новой версии ПО. ну понятно что при старте главной форме в криейт впихнуть. проверку Как хранить информацию о новой версии ПО? Толи проверять файлы в конкретной папке на сервере, толи иметь файлик к примеру XML, и его парсить, и качать последнюю там указанную версию. Если писать версию в имени файла, а в папке обновления будет лежать не одна, а сразу 10 версий как мне пропарсивать все имена всех архивов? 2) скачать не проблема волшебный IdHTTP рулит. 3)Реализация распаковки замены существующей версии ПО. Может через батник или отдельную утелитку делать для всех этих дел. По делитель мыслями и опытом реализации таких вот моментов. За рание СПС |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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-обновлениях между отдельными версиями. |
|||
|
||||
VasRip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 16.9.2006 Где: РоссийскаяХохлянд ия Репутация: нет Всего: нет |
Ну сам релиз примерно 100 метров не меньше, в архиве 30 метров. Сам EXE 7 метров. По сути в основном будет обновляться только EXE возможно и другие файлы.
Ну вот я тоже думаю делать через XML. и наверно дополнительную утилитку которая распакует и заметит все необходимые файлы. На каком этапе делать проверку существования новых обновлений? Прога периодически подключается к интернету и тянет новые данные в БД делается это по Клику пользователя. Или Делать проверку нового ПО при стягивание данных или при старте самой проги. В каком месте лучше все таки подобную вещь реализовывать? и если это делать в этапе загрузки данных то делать в начале загрузки или в конце загрузки ?? Это сообщение отредактировал(а) VasRip - 11.7.2013, 10:12 |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: нет Всего: 17 |
При старте, а так же дополнительные проверки с некоторой периодичностью на выбор пользователя: раз в день, раз в неделю, раз в месяц и т.п. По-умолчанию я бы конечно проверял при старте и потом ненавязчиво уведомлял. Еще завел бы где-нибудь в меню "Help" пункт "Проверить обновления", чтобы пользователь мог сам это сделать.
|
|||
|
||||
VasRip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 16.9.2006 Где: РоссийскаяХохлянд ия Репутация: нет Всего: нет |
понял. Благодарю Amp
|
|||
|
||||
VasRip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 16.9.2006 Где: РоссийскаяХохлянд ия Репутация: нет Всего: нет |
ЕЩЕ вопрос. Вот момент. есть функция которая скачивает обновление, успешное это делает. После этого есть два варианта 1) качать новое обновление, и потом их все распаковывать или 2)распаковать скачанное обновления уже после того как все их скачаю.
Первый вариант проще в исполнении. Второй вариант интересней тем что можно будет подкидывать обновления не через интернет а сразу в папку проги и просто вызвать утелитку обновления. Что посоветуете? |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: нет Всего: 17 |
А у тебя их много, обновлений? Почему не хочешь все файлы сложить в один архив? Первый твой вариант уязвим. Скачал ты первый архив с апдейтами, распаковал, скачал следующий - а он либо битый, либо коннект отвалился, либо что-то еще. В итоге твоя программа может оказаться нерабочей, так как часть файлов обновлена, а часть нет. Лучше сразу все слить, проверить и спокойно поочередно распаковать.
|
|||
|
||||
VasRip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 16.9.2006 Где: РоссийскаяХохлянд ия Репутация: нет Всего: нет |
Amp. обновлений не много и каждая версия обновления будет в отдельном архиве. Просто я придусматриваю случай когда пользователь пропустил не одно а разу несколько обновлений. Конект я проверяю там все должно быть ровно. А вот целостность архива не проверяю нужно замутить будет.
Amp твой вариант посложней будет но надежней наверно. Тогда что Делать список скачанных файлов и потом этот список по очереди распаковывать? И потом же по этому списку удалять успешно установленные обновления? |
|||
|
||||
avg123 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 2.4.2010 Репутация: нет Всего: нет |
Ключевое слово - кумулятивное обновление.
Не надо заставлять юзера качать все пропущенные обновления. Засада такая же как и в твоем первом варианте, Amp тебе всё разъяснил. Юзер должен при любом количестве пропущенных обновлений скачать только самый последний файл обновления. И тебе легче, не надо хранить разные версии обновлений. Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |