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

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: « Процесс обновления выполняется в нити с низким приоритетом и включает следующие шаги: # П…»)
 
(Метапеременные для указания относительного пути файла)
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
 +
Процесс обновления выполняется в нити с самым низким приоритетом и включает следующие шаги:
  
Процесс обновления выполняется в нити с низким приоритетом и включает следующие шаги:
+
# Считать из файла настроек дату очередной проверки и сверить с текущей. Если подошло время или дата очередной проверки отсутствует, то:
 
+
# Построить список файлов относительно корневого каталога Гедымина (при построении списка введем ограничения). Сформировать XML запрос.  
# Проверить дату последнего обновления (хранится в INI файле).  
+
 
# Проверить коннект к интернету.
 
# Проверить коннект к интернету.
# Послать на сервер запрос (URL сервера хранится в INI файле).
+
# Считать из файла настроек URL и послать на сервер запрос.
 
# Получить ответ.
 
# Получить ответ.
# При необходимости выкачать нужные файлы.
+
# Если необходимо обновление, сначала проверяем и удаляем данные предыдущего обновления, если оно не было проведено (например, ни разу не вызывался загрузчик).
# При успешном выполнении поместить в INI файл дату успешного обновления.
+
# При необходимости, выкачать нужные файлы.
 +
# Поместить в файл настроек список файлов, которые нуждаются в замене, слиянии или удалении.
 +
# При успешном выполнении поместить в файл настроек дату очередного обновления.
  
Если файл должен быть заменен, то новейшая версия располагается рядом с расширением ".replace". Если файл должен быть удален, то рядом создается файл с таким же именем (включая расширение) и дополнительным расширением ".delete". Новые файлы просто выкачиваются и помещаются в нужную папку.
+
Если файл должен быть заменен, то новейшая версия располагается рядом с расширением ".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>
  
 
==== Структура ответа сервера ====
 
==== Структура ответа сервера ====
  
[[Category:Постановка]]
+
  <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} || Корневой каталог Гедымина.
 +
|}
 +
 
 +
[[Category:Постановка-Сделано]]

Текущая версия на 19:47, 4 января 2013

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

  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} Корневой каталог Гедымина.
Персональные инструменты
Пространства имён

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