Тихое Обновление Без Перерыва

Разрабатываю и поддерживаю внутрикорпоративный инструмент. Короче говоря, это довольно сложная автоматизированная система мониторинга; клиент работает под Windows. Собственно, проблема была в том, как обновить программу.

Основные препятствия: Программа запущена на нескольких компьютерах и работает постоянно.

Внеплановый запуск программы – вещь очень нежелательная.

Перезапуск занимает пару минут, но за это время важное событие может проскользнуть и не отследиться.

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

До некоторого времени обновление происходило так: я просил всех закрыть программу, и заменял старый бинарник на обновленный.

Часто приходилось ждать — вечно кто-то был занят, или не мог закрыть мониторинг, или ещё что-то в этом роде.

Как я решил проблему обновления на рабочем месте? Как это обычно бывает, сначала в голову пришли сложные и неэффективные способы решения проблемы.

Например, принудительное самостоятельное копирование программы на винт лаунчера, и запуск оттуда.

Либо запуск не самой программы, а ее копии в оперативной памяти.

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

Но окончательное решение оказалось очень простым и гораздо более эффективным.

Я заменил основной exe файл программы на программу, которая ищет и запускает самую новую версию мониторинга.

Запущенный «обновитель» ищет в своем каталоге все exe-файлы с именами, соответствующими заданной маске, проверяет версию файла и запускает файл, версия которого старше.

Я решил начать с версии файла, а, скажем, не с названия или даты обновления - так надежнее.

Для пользователей все осталось по-прежнему; им даже не пришлось редактировать ссылки.

После размещения обновления в сети оно будет запущено при первом перезапуске мониторинга, что происходит тогда, когда это возможно, а не тогда, когда это требуется.

Старые версии двоичных файлов удаляются вручную после тестирования обновления в рабочей среде.

В случае чего откат на старую версию также максимально упрощается; нужно просто удалить обновление (хоть и дедовским способом).

Метод работает как часы уже полгода.

Ничего нового и оригинального я, конечно, не придумал – но, возможно, эта заметка поможет кому-то решить подобную задачу.

Теги: #обновление #тихое обновление #Чулан

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.