Project

General

Profile

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

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

Каталог, из которого будут скопированы файлы, указывается в Общих настройках, на закладке Доп*:
Базовые установки\Путь поиска автоматических обновлений*

Логика работы

При проверке наличия обновления программа ищет в указанном каталоге подкаталог, совпадающий по имени с названием выполняемого файла.
Например, в настройках указан путь \\Server\updates, а выполняемый файл программы называется DJin.exe, то в этой ситуации программа будет искать каталог
\\Server\updates\Djin

Если такой каталог существует, то программа считывает содержимое 2-х файлов из этого каталога:

update.info Файл содержит название версии ПО в виде текста. Может редактироваться любым текстовым редактором.
Содержимое файла отображается пользователю при смене версии.
update.par Это текстовый файл, он содержит режим обновления в виде одной строки текста.
Возможные варианты(обязательно указание символа минус в начале текста):
-NOREQUEST
-MANUAL

Далее программа считывает файл update.info, находящийся в каталоге инсталляции, обычно C:\Program files\Digispot II\Djin\update.info, и сравнивает его содержимое с содержимым \\Server\updates\Djin\update.info

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

В случае, если необходимо обновление, программа действует в соответствии с режимом обновления:

-NOREQUEST Обновления устанавливаются без запроса пользователя при запуске приложения
-MANUAL Обновления устанавливаются только при явном обращении к пункту меню
Помощь\Установить обновления
Если обновление необходимо, то программа запрашивает разрешения на обновление, и, при согласии пользователя, устанавливает их.
В остальных случаях Обновления проверяются, но устанавливаются только после подтверждения пользователем.
Этот режим не рекомендуется использовать, т.к. пользователь обычно не знает, как отвечать на запрос об обновлении, и может неделями отвечать Нет, сохраняя у себя старую версию.

Окно подтверждения обновления выглядит так:

update_request.jpg

Название версии - это содержимое файла update.info.

Процесс обновления происходит следующим образом (в версиях до 2.15 процесс был другим):

  1. Обновляемое приложение копирует starter.exe из каталога обновления
  2. Обновляемое приложение запускает starter.exe с необходимыми параметрами. starter.exe ожидает завершения работы приложения, которое его запустило
  3. Обновляемое приложение завершает работу
  4. starter.exe выполняет копирование всех файлов из каталога обновления в каталог инсталляции, включая файл version.info. Таким образом при следующей проверке обновлений файлы версий совпадут и обновления не произойдет. Одноименные файлы, уже существующие в каталоге инсталляции, при этом перезаписываются, даже если у них установлен атрибут "Только чтение".
  5. starter.exe запускает на выполнение файл autoupdate.bat, если он был скопирован в данном сеансе обновления. Таким образом на обновляемом месте могут быть выполнены дополнительные действия: установка сервисов, регистрация приложений, автоматическое формирование файлов конфигурации и пр.
    Если в данном сеансе обновления файл autoupdate.bat не был скопирован, то он не будет выполнен, даже если он присутствует в каталоге инсталляции.

Starter.exe ведет лог своей работы в файле <каталог инсталляции>\DBG_LOG\starter.log, сохраняя в нем информацию о всех выполненных действиях, ошибках и пр.

При автоматическом обновлении со старых версий типа 2.14, 2.15, 2.16 возможна ошибка со ссылками на: Newtonsoft.Json.dll, Xceed.Wpf.Toolkit.dll. Для устранения ошибки, нужно подложить autoupdate.bat в корневой каталог каждой программы в папке с автообновлением (т.е. в папку "Mediaplanner", "Djin" и т.д.) и запустить снова автообновление. Этот скрипт вычистит Newtonsoft.Json.dll, Xceed.Wpf.Toolkit.dll из каталогов во время автоматического обновления.

Обычно содержимое каталога обновления содержит копию файлов из каталога инсталляции ПО, за исключением файлов, защищенных ключами защиты (keydll_x.dll), которые привязаны к компьютерам с соответсвующими ключами. Например, устанавливается дистрибутив Джинн новой версии в каталог \\Server\updates\Djin. Из этого каталога обновления нельзя запускаться приложение djin.exe, иначе будут созданы конфигурационные файлы в каталоге \\Server\updates\Djin\System, которые при обновлении заменят собой конфигурационные файлы на рабочих местах.

Add picture from clipboard (Maximum size: 742 MB)