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

210 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Установщик 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:
```text
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`.
## Конфигурация приложения
После успешного создания базы установщик записывает:
```text
%ProgramData%\Inventera\config.json
```
При запуске `Inventera.Server.exe` читает из этого файла адрес и порт PostgreSQL, имя базы, логин, пароль и порт веб-приложения. Поэтому введённые в мастере значения автоматически используются кодом приложения.
## Ярлык и автозапуск
Ярлык `Inventera` на рабочем столе открывает веб-приложение в браузере по адресу:
```text
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` и положите по адресу:
```text
installer\prerequisites\postgresql.exe
```
Запустить:
```bat
build_inventera_installer_windows.bat
```
Также для полной редакции доступна явная команда-обёртка:
```bat
build_inventera_full_installer_windows.bat
```
Номер выпуска можно передать первым аргументом. Например:
```bat
build_inventera_full_installer_windows.bat 0.2.0
```
Если номер не передан, используется `0.1.0-beta`.
Для редакции «Картриджи» используется отдельная команда:
```bat
build_inventera_cartridge_installer_windows.bat
```
Для картриджной редакции версия передаётся так же:
```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 должен находиться здесь:
```text
installer\prerequisites\postgresql.exe
```
Этот файл включается внутрь `dist\Inventera.exe`, поэтому готовый установщик работает без интернета.
## Важно
- Установщик требует права администратора Windows.
- При удалении Inventera база PostgreSQL и файл конфигурации не удаляются автоматически, чтобы не потерять данные.
- Служебные параметры автоматической установки также сохраняются после удаления Inventera, чтобы PostgreSQL оставался доступен при повторной установке приложения.
- Если используется другая основная версия PostgreSQL, измените `PostgreSqlMajor` в `Inventera.iss`.