Разрабатываю и поддерживаю внутрикорпоративный инструмент. Короче говоря, это довольно сложная автоматизированная система мониторинга; клиент работает под Windows. Собственно, проблема была в том, как обновить программу.
Основные препятствия: Программа запущена на нескольких компьютерах и работает постоянно.
Внеплановый запуск программы – вещь очень нежелательная.
Перезапуск занимает пару минут, но за это время важное событие может проскользнуть и не отследиться.
Программа запускается с общего сетевого ресурса по ссылке (это удобнее для всех), соответственно до завершения работы программы на всех рабочих станциях бинарный файл заменить нельзя - он используется.
До некоторого времени обновление происходило так: я просил всех закрыть программу, и заменял старый бинарник на обновленный.
Часто приходилось ждать — вечно кто-то был занят, или не мог закрыть мониторинг, или ещё что-то в этом роде.
Как я решил проблему обновления на рабочем месте? Как это обычно бывает, сначала в голову пришли сложные и неэффективные способы решения проблемы.
Например, принудительное самостоятельное копирование программы на винт лаунчера, и запуск оттуда.
Либо запуск не самой программы, а ее копии в оперативной памяти.
Вообще я сначала исходил из того, что запускаемый бинарник после запуска не должен быть занят программой, и его можно заменить.
Но окончательное решение оказалось очень простым и гораздо более эффективным.
Я заменил основной exe файл программы на программу, которая ищет и запускает самую новую версию мониторинга.
Запущенный «обновитель» ищет в своем каталоге все exe-файлы с именами, соответствующими заданной маске, проверяет версию файла и запускает файл, версия которого старше.
Я решил начать с версии файла, а, скажем, не с названия или даты обновления - так надежнее.
Для пользователей все осталось по-прежнему; им даже не пришлось редактировать ссылки.
После размещения обновления в сети оно будет запущено при первом перезапуске мониторинга, что происходит тогда, когда это возможно, а не тогда, когда это требуется.
Старые версии двоичных файлов удаляются вручную после тестирования обновления в рабочей среде.
В случае чего откат на старую версию также максимально упрощается; нужно просто удалить обновление (хоть и дедовским способом).
Метод работает как часы уже полгода.
Ничего нового и оригинального я, конечно, не придумал – но, возможно, эта заметка поможет кому-то решить подобную задачу.
Теги: #обновление #тихое обновление #Чулан
-
Высшее Образование На Русском Языке
19 Oct, 24 -
Спартак – Чемпион!
19 Oct, 24 -
Роутеры D-Link
19 Oct, 24