12 KiB
Установщик Inventera для Windows
Проект собирает две редакции из одной кодовой базы:
- полная:
dist\Inventera.exe; - «Картриджи»:
dist\Inventera-Cartridge.exe.
Редакция сохраняется в config.json. Полная редакция включает все реализованные
разделы, а редакция «Картриджи» блокирует функции, которых нет в её комплекте.
Что входит в установщик
- сервер Inventera, собранный в
Inventera.Server.exe; - официальный 64-битный установщик PostgreSQL 18 от EDB;
- мастер с автоматическим и ручным режимами;
- проверка занятости портов;
- создание базы, пользователя и конфигурации приложения;
- правило брандмауэра Windows для выбранного порта Inventera;
- ярлыки веб-приложения Inventera в меню «Пуск» и на рабочем столе;
- автоматический запуск сервера Inventera при старте Windows.
Автоматический режим
- PostgreSQL устанавливается без дополнительных вопросов;
- логин администратора PostgreSQL:
postgres; - пароль администратора генерируется установщиком и пользователю не показывается;
- база:
Inv_Web; - пользователь базы:
invwebuser; - пароль базы:
invwebpassword; - порт PostgreSQL по умолчанию:
5432; - порт веб-приложения по умолчанию:
5050.
Порты PostgreSQL и веб-приложения не могут совпадать. Если один из требуемых портов занят, мастер не позволит продолжить установку.
Перед запуском PostgreSQL установщик сохраняет его автоматически созданный пароль и выбранный порт в реестре Windows:
HKEY_LOCAL_MACHINE\Software\Inventera\Installer
Это позволяет корректно продолжить установку после ошибки или отмены без генерации нового пароля для уже созданного кластера.
Режим обновления
Если мастер обнаруживает установленную Inventera с тем же идентификатором приложения, он автоматически переходит в режим обновления:
- показывает установленную и новую версии;
- использует существующий каталог установки;
- не запускает установку PostgreSQL и не показывает страницы первичной настройки;
- сохраняет
%ProgramData%\Inventera\config.jsonи всю существующую базу данных; - определяет текущий порт Inventera из конфигурации;
- останавливает работающий сервер или службу;
- заменяет файлы приложения и восстанавливает автозапуск;
- запускает обновлённую Inventera после завершения.
Режим обновления включается и при повторной сборке с тем же номером версии, но для понятного отображения версии в Windows рекомендуется увеличивать номер при каждом выпуске.
Повторный запуск первичной установки
Если служба InventeraPostgreSQL18 уже существует, установщик:
- не запускает установщик PostgreSQL повторно;
- читает фактический порт из
postgresql.conf; - показывает этот порт в мастере и запрещает случайно изменить его;
- использует сохранённый автоматический пароль;
- повторяет создание базы и конфигурации Inventera.
Занятый порт обнаруженной службы PostgreSQL является нормальным состоянием и не считается ошибкой.
Старые сборки Inventera не сохраняли случайный пароль администратора PostgreSQL. Если найден такой PostgreSQL, автоматический режим остановится с пояснением. Нужно либо выбрать ручной режим и указать известный пароль администратора, либо удалить неудачную старую установку PostgreSQL вместе с её каталогом данных и выполнить чистую автоматическую установку. Каталог данных нельзя удалять, если в нём уже есть нужные базы.
Ручной режим
Мастер предлагает:
- установить PostgreSQL из комплекта или использовать существующую установку;
- ввести логин и пароль администратора PostgreSQL;
- указать порты PostgreSQL и Inventera;
- изменить имя базы, логин и пароль приложения;
- при использовании существующего PostgreSQL указать путь к
psql.exe.
Поля базы заранее заполнены значениями Inv_Web, invwebuser, invwebpassword.
Конфигурация приложения
После успешного создания базы установщик записывает:
%ProgramData%\Inventera\config.json
При запуске Inventera.Server.exe читает из этого файла адрес и порт PostgreSQL, имя базы, логин, пароль и порт веб-приложения. Поэтому введённые в мастере значения автоматически используются кодом приложения.
Ярлык и автозапуск
Ярлык Inventera на рабочем столе открывает веб-приложение в браузере по адресу:
http://127.0.0.1:<порт Inventera>
В полной редакции сервер регистрируется в Планировщике заданий Windows под именем
Inventera Server.
В редакции «Картриджи» сервер работает через настоящую службу Windows
InventeraServer. Служба запускается от системной учётной записи вместе с
Windows, даже если пользователь ещё не вошёл. При аварийном завершении Windows
пытается перезапустить её до трёх раз с интервалом в одну минуту. Если PostgreSQL
установлен самим мастером, служба Inventera также получает зависимость от службы
PostgreSQL и запускается после неё.
При обновлении удаляется старый ярлык Inventera Server из общей папки
«Автозагрузка», чтобы одновременно не запускались два экземпляра сервера.
При обновлении картриджной редакции старое задание Планировщика удаляется, чтобы
не запускались два экземпляра сервера. При удалении Inventera соответствующее
задание или служба также удаляются.
Сборка на Windows x64
Требования:
- Python 3 с командой
py; - Inno Setup 6 или 7;
- заранее скачанный официальный установщик PostgreSQL для Windows x64.
Перед сборкой скачайте установщик PostgreSQL, переименуйте его в postgresql.exe и положите по адресу:
installer\prerequisites\postgresql.exe
Запустить:
build_inventera_installer_windows.bat
Также для полной редакции доступна явная команда-обёртка:
build_inventera_full_installer_windows.bat
Номер выпуска можно передать первым аргументом. Например:
build_inventera_full_installer_windows.bat 0.2.0
Если номер не передан, используется 0.1.0-beta.
Для редакции «Картриджи» используется отдельная команда:
build_inventera_cartridge_installer_windows.bat
Для картриджной редакции версия передаётся так же:
build_inventera_cartridge_installer_windows.bat 0.2.0
Общий код установщика находится в Inventera.iss. Настройки картриджной сборки
вынесены в Inventera.Cartridge.iss, поэтому изменения общего процесса установки
автоматически попадают в обе редакции.
Картриджный установщик показывает изображения из picture\Setup в правом нижнем
углу основных страниц мастера: приветствие, выбор режима, настройка базы, выбор
папки, процесс и завершение. Для совместимости с Inno Setup их подготовленные
BMP-копии лежат в installer\assets\cartridge.
Автозапуск картриджной редакции выполняет служба Windows InventeraServer.
Она запускается автоматически вместе с Windows и настроена на три попытки
перезапуска с интервалом в одну минуту. Старое задание Планировщика при обновлении
удаляется.
Скрипт:
- проверит наличие
installer\prerequisites\postgresql.exe; - соберёт сервер через PyInstaller;
- скомпилирует
Inventera.iss; - создаст
dist\Inventera.exe.
Установщик PostgreSQL должен находиться здесь:
installer\prerequisites\postgresql.exe
Этот файл включается внутрь dist\Inventera.exe, поэтому готовый установщик работает без интернета.
Важно
- Установщик требует права администратора Windows.
- При удалении Inventera база PostgreSQL и файл конфигурации не удаляются автоматически, чтобы не потерять данные.
- Служебные параметры автоматической установки также сохраняются после удаления Inventera, чтобы PostgreSQL оставался доступен при повторной установке приложения.
- Если используется другая основная версия PostgreSQL, измените
PostgreSqlMajorвInventera.iss.