Автообновление выполняемого модуля (постановка)
Материал из GedeminWiki
Тут будет постановка, а пока несколько замечаний:
- Старый экзешник надо сохранять и у пользователя должна быть возможность вернуться к старому экзешнику. Возможно, стоит сохранять все старые экзешники.
- В локальной БД пользователя должен вестись полный лог обмена с сервером: когда была попытка подключиться, какой результат (ошибка (какая?), успех, не требует обновления, обновлено успешно и т.п.).
- Таргетирование распространения нового экзешника должно вестись следующим образом: сначала проверяется, входит ли наш клиент в указанную группу. Если да, то проверяется не входит ли он в группу, обновлять экзешники которым автоматически категорически нельзя.
- Группы:
- Все
- Группа с именем (например НИВА-СХП)
- Клиент с конкретным ИД
- Конкретная версия экзешника
- Пока мы говорим только о gedemin.exe. Может стоит подумать о любом файле из установки Гедымина?
- Пересылаемые файлы и заменяемые экзешники должны архивироваться
- При передаче клиенту, пересылать контрольные суммы архива и каждого файла по отдельности
- По умолчанию использовать настройки подключения к Интернету как в IE, но оставить возможность вручную указать прокси.
- На клиенте добавляем таблицу AT_DATABASE с полем UUID (или аналогичный генератор). UUID генерируется после внесения данных о клиенте, при первой попытке обновления, на основании УНН и ИД базы. Потом UUID используется для идентификации базы на сервере обновлений.
- На сервере проверяется, есть ли такой UUID в таблице "Базы данных". Если нет, проверяем, есть ли клиент с таким УНН. Если нет, добавляем. Добавляем базу.
Отложенная замена файла: MoveFileEx Function