Автоматическое обновление файлов Гедымина (постановка)

Материал из GedeminWiki
Версия от 19:47, 4 января 2013; SYSDBA (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Процесс обновления выполняется в нити с самым низким приоритетом и включает следующие шаги:

  1. Считать из файла настроек дату очередной проверки и сверить с текущей. Если подошло время или дата очередной проверки отсутствует, то:
  2. Построить список файлов относительно корневого каталога Гедымина (при построении списка введем ограничения). Сформировать XML запрос.
  3. Проверить коннект к интернету.
  4. Считать из файла настроек URL и послать на сервер запрос.
  5. Получить ответ.
  6. Если необходимо обновление, сначала проверяем и удаляем данные предыдущего обновления, если оно не было проведено (например, ни разу не вызывался загрузчик).
  7. При необходимости, выкачать нужные файлы.
  8. Поместить в файл настроек список файлов, которые нуждаются в замене, слиянии или удалении.
  9. При успешном выполнении поместить в файл настроек дату очередного обновления.

Если файл должен быть заменен, то новейшая версия располагается рядом с расширением ".replace". Если файл должен быть объединен, то новейшая версия располагается рядом с расширением ".merge". Новые файлы просто выкачиваются и помещаются в нужную папку.

Операции над файлами выполняются загрузчиком при очередном запуске.

Структура запроса к серверу

 <gedemin_update_request version="1">
   <params> 
     <company_name>...</company_name>
     <company_ruid>...</company_ruid>
     <company_phone>...</company_phone>
     <company_email>...</company_email>
     <tax_id>...</tax_id>
     <licence>...</licence>
     <db_version>...</db_version>
   </params>
   <file_list>
     <file>
       <full_name>...</full_name>
       <file_version>...</file_version>
     </file>
     <file>
       ...
     </file> 
     ...
   </file_list>
 </gedemin_update_request>

Структура ответа сервера

 <gedemin_update_answer version="1">
   <message>...</message>
   <message_url>...</message_url>
   <file_list>
     <file>
       <full_name>...</full_name>
       <file_url>...</file_url>
       <file_operation>...</file_operation>
     </file>
     <file>
       ...
     </file> 
     ...
   </file_list>
 </gedemin_update_answer>

Message -- это произвольное текстовое сообщение, которое будет показано пользователю по окончании процесса выкачивания файлов. Message_url -- адрес страницы, на который будет выполнен переход после успешного окончания выкачивания файлов. Если ни то, ни другое не указано, то выводится сообщение, что выполнено обновление до такой-то версии (берется версия файла gedemin.exe), необходимо перезапустить программу.

File_operation -- одно из следующих значений: ADD, DELETE, REPLACE, MERGE. Операция слияния применима только к INI файлам.

Отсутствие списка файлов в ответе означает, что обновление не требуется.

Метапеременные для указания относительного пути файла

Наименование Описание
{GEDEMIN_ROOT} Корневой каталог Гедымина.
{GEDEMIN_APP} Корневой каталог Гедымина.
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты