sputnickk
@sputnickk

А как Вы организовали универсальный апдейтер?

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

Создается программа, например updater.exe

На апдейтор создается ярлык с параметром рабочей папки того или иного ПО, например

Ярлык Программа Авис объект "D:\updater\updater.exe" -d:\avias\

В апдейтере есть файл настроек D:\updater\updater.ini

Алгоритм работы запуска программы с ярлыка (Ярлык Программа Авис объект "D:\updater\updater.exe" -d:\avias\)

1) Поиск в файле настроек апдейтера путей к программе и обновлений для нее:

updater.ini:
...
Software1Name="АВИАС"
Software1Path="d:\avias\"
Software1AppPath="d:\avias\start.exe"
Software1UpdatePath="\\100.125.214.43\update\avias\current\"
...

2)
Вычитываем локальную версию программы: Software1Path\+updater.version
Вычитываем версию программы на удаленном сервере: Software1UpdatePath\+updater.version

если версии не совпадают, копируем с Software1UpdatePath в Software1Path

3) При успешном копировании обновляем локальный файл updater.version удаленным

4) сообщение пользователю - успешное обновление

5) Запуск программы для работы - Software1AppPath


Тут один стремный момент - если что-то пошло не так, сетевой ресурс не доступен и др - то программа не запуститься d:\avias\start.exe", так как запуск это конечная функция апдейтера. Как бы сделать так, чтобы d:\avias\start.exe" при любом раскладе мог запуститься, так как обновление не критично, в то время как запуск ПО - критичен, те можно работать на не обновленном ПО.

Я вижу только - расстановка исключений, вывод оператору информации о ошибке и возможность запустить ПО, например: ошибка такая то, сообщите админу и кнопка - запустить Software1Name без обновления

Ресурс \\100.125.214.43 всегда подключен, но можно при недоступности добавить в апдейтер проверку и мапинг.

Ини файл это как пример, можно конечно и в xml и в app.config держать. Планируется чтобы апдейтер был универсальным, чтобы мог апдейтить порядка 3-5 приложений. Язык c#, отрабатывать корректно должен на Win XP - Win 10

Прошу совета гуру

UPD:1
Более простой вариант - в автозагрузку вешается простой самописный синхронизатор каталогов и по списку в настройках делает копирование с заменой всех файлов, если версии не совпадают (алгоритм выше). Т.е. утром запустив машину, первым делом все обновится, если обновления имеются
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
@pfg21
ex-турист
самый простой и отработанный костыль работает лучше чем новонаписанный скрыпт.
берется програмка синхронизации файлов - "тысячи их"...
правильно настраивается чтобы клонировать состояние на локальную фс с определенного каталога на сервере.
настраивается и тестируется на тестовом образе (в виртуалке чтоб проще было множить тестовые системы).
ставится юзерам.
програмку на сервере обновлять ночером - чтобы у юзера, утром включившего комп прога сразу обновилась.
Ответ написан
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Вгоняем тачки в домен, пакуем апдейты в msi пакеты, политиками раскатываем апдейт.

Так-же есть такое дело как SCCM (System Center Configuration Manager)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы