Система автоматического обновления версии ПО¶
Система позволяет автоматически обновить ПО на рабочем месте, самостоятельно копируя файлы с указанной папки в каталог инсталляции, заменяя существующие. Системы автоматического создания копий заменяемых файлов нет. Возможности отменить копирование нет.
Каталог, из которого будут скопированы файлы, указывается в Общих настройках, на закладке Доп*:
Базовые установки\Путь поиска автоматических обновлений*
Логика работы¶
При проверке наличия обновления программа ищет в указанном каталоге подкаталог, совпадающий по имени с названием выполняемого файла.
Например, в настройках указан путь \\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.info.
Процесс обновления происходит следующим образом (в версиях до 2.15 процесс был другим):
- Обновляемое приложение копирует starter.exe из каталога обновления
- Обновляемое приложение запускает starter.exe с необходимыми параметрами. starter.exe ожидает завершения работы приложения, которое его запустило
- Обновляемое приложение завершает работу
- starter.exe выполняет копирование всех файлов из каталога обновления в каталог инсталляции, включая файл version.info. Таким образом при следующей проверке обновлений файлы версий совпадут и обновления не произойдет. Одноименные файлы, уже существующие в каталоге инсталляции, при этом перезаписываются, даже если у них установлен атрибут "Только чтение".
-
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, которые при обновлении заменят собой конфигурационные файлы на рабочих местах.