Автоматическое обновление файлов Гедымина (постановка)
Процесс обновления выполняется в нити с самым низким приоритетом и включает следующие шаги:
- Считать из файла настроек дату очередной проверки и сверить с текущей. Если подошло время или дата очередной проверки отсутствует, то:
- Построить список файлов относительно корневого каталога Гедымина (при построении списка введем ограничения). Сформировать XML запрос.
- Проверить коннект к интернету.
- Считать из файла настроек URL и послать на сервер запрос.
- Получить ответ.
- Если необходимо обновление, сначала проверяем и удаляем данные предыдущего обновления, если оно не было проведено (например, ни разу не вызывался загрузчик).
- При необходимости, выкачать нужные файлы.
- Поместить в файл настроек список файлов, которые нуждаются в замене, слиянии или удалении.
- При успешном выполнении поместить в файл настроек дату очередного обновления.
Если файл должен быть заменен, то новейшая версия располагается рядом с расширением ".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} | Корневой каталог Гедымина. |