Files
Inv_web/INVENTERA_INSTALLER.md
2026-08-11 12:54:09 +03:00

12 KiB
Raw Blame History

Установщик 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 вместе с её каталогом данных и выполнить чистую автоматическую установку. Каталог данных нельзя удалять, если в нём уже есть нужные базы.

Ручной режим

Мастер предлагает:

  1. установить PostgreSQL из комплекта или использовать существующую установку;
  2. ввести логин и пароль администратора PostgreSQL;
  3. указать порты PostgreSQL и Inventera;
  4. изменить имя базы, логин и пароль приложения;
  5. при использовании существующего 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 и настроена на три попытки перезапуска с интервалом в одну минуту. Старое задание Планировщика при обновлении удаляется.

Скрипт:

  1. проверит наличие installer\prerequisites\postgresql.exe;
  2. соберёт сервер через PyInstaller;
  3. скомпилирует Inventera.iss;
  4. создаст dist\Inventera.exe.

Установщик PostgreSQL должен находиться здесь:

installer\prerequisites\postgresql.exe

Этот файл включается внутрь dist\Inventera.exe, поэтому готовый установщик работает без интернета.

Важно

  • Установщик требует права администратора Windows.
  • При удалении Inventera база PostgreSQL и файл конфигурации не удаляются автоматически, чтобы не потерять данные.
  • Служебные параметры автоматической установки также сохраняются после удаления Inventera, чтобы PostgreSQL оставался доступен при повторной установке приложения.
  • Если используется другая основная версия PostgreSQL, измените PostgreSqlMajor в Inventera.iss.