Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Сокровищница
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  03:30[Войти] | [Зарегистрироваться]

Простой способ автоматического обновления

Александр Малыгин
дата публикации 16-08-2004 11:58

Простой способ автоматического обновления

"Используй то, что под рукою, и не ищи себе другое"
Филеас Фогг

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

Предлагаемый способ не требует внесения специального кода в приложение. Используются стандартные средства операционной системы. Также он предполагает участие пользователя. Точнее, процедура обновления не может выполниться, пока пользователь этого не позволит. В данном случае лояльность к пользователю (дать ему возможность корректно закончить текущий сеанс работы) — это более полезное качество, чем "тихое" обновление "незаметно" для него.

Какие задачи решаются
  • Замена любого количества файлов приложения на файлы из пакета обновления
  • Складирование успешно обработанных пакетов в специальной директории
  • Складирование пакетов, обработанных с ошибкой, в специальной директории
  • Ведение журнала обновлений
  • Запись в журнал фатальных runtime ошибок приложения
Какие задачи не решаются
  • Контроль версий файлов (файлы безусловно переписываются)
  • Автоматический откат в случае неудачного обновления (хотя создаются условия для ручного отката)
  • Немедленное обновление при работающем приложении
Условия применимости
  • Приложением управляет пользователь. Во всяком случае, он может его перезагрузить
  • Приложение запускается из bat-файла, который прописан в ярлыке. Если пользователь запускает непосредственно exe, то система обновления не работает.
  • Директория приложения доступна оператору, рассылающему обновления, как сетевой ресурс, либо по ftp. В крайнем случае пакет обновления посылается по электропочте или передается физическим носителем информации, с инструкцией, куда скопировать файл. В лучшем случае имеется доступ по терминальной сессии или через RemoteAdmin.
  • Пакет обновления должен быть отлажен программистом. Надо быть уверенным, что состав передаваемых файлов необходим и достаточен для успешного обновления именно той версии программы, которая стоит у данного клиента.
  • На клиентской машине должен быть установлен архиватор, который используется системой обновления. Он должен работать в режиме командной строки (достаточно утилиты разархивации).
Порядок работы
  1. Оператор обновления (программист) архивирует необходимые файлы и помещает собранный пакет в директорию UPDATE на клиентской машине, любым из вышеописанных способов.
  2. Пользователю посылается извещение по электропочте или стандартным мессенджером (net send) о том, что надо перегрузить программу.
  3. При очередном запуске система обновления обрабатывает все файлы в директории UPDATE, пытаясь разархивировать их в текущую директорию программы.
  4. Запускается основной исполняемый модуль приложения.
Техническое обеспечение

В корневой директории приложения должно быть создано следующее дерево:

UPDATE  — для пакетов текущего обновления
UPDATE\ARCH  — для отработанных пакетов
UPDATE\BAD  — для ошибочных пакетов

В корневой директории располагаются файлы autoupdate.bat и processupdate.bat. Ярлык программы настраивается, чтобы запуск происходил так:

autoupdate.bat program.exe

Содержимое файла autoupdate.bat:

@for %%a in (UPDATE\*.rar) do call processupdate.bat %%a
@if .%1==. exit
%1
@if ERRORLEVEL 1 echo %date% %time% Error execution %1 : %ERRORLEVEL% >>update.log

Содержимое файла processupdate.bat:

@if .%1==. exit
"C:\Program Files\WinRAR\unrar" x -y %1
@if ERRORLEVEL 1 goto bad
move %1 UPDATE\ARCH\
@echo %date% %time% Success update. File %1 >>update.log
@exit
:bad
@echo %date% %time% Unpack error %ERRRORLEVEL%. File %1 >>update.log
move %1 UPDATE\BAD\

При необходимости следует поправить путь к утилите для разархивации и расширение файлов пакетов.




Смотрите также материалы по темам:
[Установка ПО] [Удаленная установка]

 Обсуждение материала [ 11-03-2010 15:48 ] 30 сообщений
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования