Содержание
16. База обновлений
В DataExpress предусмотрен механизм автоматического обновления приложения через базу обновлений. База обновлений - это база данных Firebird, в которой могут храниться файлы приложения, шаблоны, библиотеки и другие файлы.
Кратко схема обновления выглядит следующим образом:
- Разработчик загружает в базу обновлений файлы, которые должны быть доставлены клиентам (компьютеры пользователей).
- На клиентах приложение при запуске проверяет наличие обновления в базе обновлений. Если обновление обнаружено, приложение запрашивает у пользователя разрешения выполнить обновление. При положительном ответе, приложение загружает файлы из базы обновления и распаковывает их во временную папку. Далее приложение запускает утилиту обновления dxupdate и завершает работу. Утилита dxupdate копирует все файлы из временной папки в папку приложения и запускает DataExpress.
Конечно, чтобы эта схема заработала, сначала вам необходимо обновить все клиенты вручную. В настройках приложения необходимо прописать путь к базе обновлений и включить проверку обновлений.
Создание базы обновлений
Для начала определитесь с расположением базы обновлений. Например, пусть это будет сервер Linux, расположенный по адресу 80.34.23.65, каталог /var/db/, имя файла базы обновлений myupdates.fdb. Полный путь к базе обновлений будет таким: 80.34.23.65:/var/db/myupdates.fdb.
Чтобы приложение DataExpress могло создать базу данных, необходимо дать права пользователю firebird на запись в каталог /var/db/. Одним из способов является смена владельца каталога на firebird. Выполните на вашем сервере Linux команду:
chown firebird /var/db/
На компьютере, где вы разрабатываете вашу базу данных, запустите DataExpress. Откройте настройки приложения и на вкладке «Обновления» пропишите путь к базе данных.
Если пароль SYSDBA отличается от стандартного, введите пароль. Флажок «Проверять обновление» ставить не нужно, т. к. вы будете обновлять приложение вручную. Сохраните настройки.
Откройте базу обновлений, выбрав одноименный пункт в меню «Файл». Приложение попытается подключиться к базе обновлений. Если базы не существует, то она будет создана автоматически. На рисунке ниже показана только что созданная база обновлений.
Работа с базой обновлений
Окно базы обновлений поделено на две части. Слева находится содержимое папки приложения в виде дерева папок и файлов, справа - содержимое базы обновлений, которое представлено таким же деревом. Чуть выше вы можете увидеть соответственно версию текущего приложения и версию приложения, сохраненного в базе.
Обновление работает в пределах папки приложения.
Отметьте файлы, которые должны быть загружены в базу обновлений и нажмите кнопку со стрелочкой. Обратите внимание, что содержимое базы данных будет полностью заменено.
Вы можете заменить стандартное сообщение, которое будет показано пользователю при обнаружении обновления, на свое. Для этого нажмите на кнопку с многоточием.
Обновление пользователей
Пропишите у пользователей в настройках приложения путь к базе обновлений и поставьте флажок «Проверка обновлений». При следующем запуске приложение проверяет наличие обновлений и в случае обнаружения запрашивает у пользователя разрешение выполнить обновление. Приложение загружает обновления во временную папку, запускает утилиту обновления dxupdate и завершает работу. Утилита обновления ожидает 5 секунд, чтобы процесс DataExpress успел завершиться и проверяет файлы, подлежащие замене, на возможность перезаписи. Если какой-либо файл перезаписать невозможно, то утилита показывает сообщение. Пользователь должен закрыть все мешающие приложения и нажать кнопку «Повторить». Если проблема остается пользователь может нажать кнопку «Прервать» и попытаться обновить приложение в другой раз после устранения проблемы.
Если проверка прошла успешно, утилита копирует все файлы из временной папки в папку приложения и запускает DataExpress.
Особенности обновления
- Приложение проверяет наличие обновлений по времени изменения файла или его отсутствию.
- Утилита обновления также может быть обновлена. Перед запуском утилиты DataExpress копирует утилиту себе в папку.
- Файл dataexpress.cfg тоже возможно обновить. Т.к. он изменяется постоянно, утилита не проверяет его на изменение.
- Не обязательно обновлять всю папку приложения. Если вы уверены, что все пользователи обновлены, загружайте в базу только изменившиеся файлы.
- Вы можете обновлять не только файлы приложения, но и шаблоны. Если хранить шаблоны в папке программы, то с помощью автоматического обновления можно доставлять шаблоны до пользователей. Нет необходимости создавать общую папку в сети или хранить шаблоны в базе данных.
- Если запустить утилиту dxupdate вручную, то она скопирует файлы из временной папки в папку приложения и запустит DataExpress.