Files
Inv_web/INVENTERA_INSTALLER.md
2026-07-28 20:39:14 +03:00

171 lines
9.8 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
```
Это позволяет корректно продолжить установку после ошибки или отмены без генерации
нового пароля для уже созданного кластера.
## Повторный запуск
Если служба `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, переименуйте его в `postgesql.exe` и положите по адресу:
```text
installer\prerequisites\postgesql.exe
```
Запустить:
```bat
build_inventera_installer_windows.bat
```
Для редакции «Картриджи» используется отдельная команда:
```bat
build_inventera_cartridge_installer_windows.bat
```
Общий код установщика находится в `Inventera.iss`. Настройки картриджной сборки
вынесены в `Inventera.Cartridge.iss`, поэтому изменения общего процесса установки
автоматически попадают в обе редакции.
Картриджный установщик показывает изображения из `picture\Setup` на основных
этапах мастера. Для совместимости с Inno Setup их подготовленные BMP-копии лежат
в `installer\assets\cartridge`.
Автозапуск картриджной редакции выполняет служба Windows `InventeraServer`.
Она запускается автоматически вместе с Windows и настроена на три попытки
перезапуска с интервалом в одну минуту. Старое задание Планировщика при обновлении
удаляется.
Скрипт:
1. проверит наличие `installer\prerequisites\postgesql.exe`;
2. соберёт сервер через PyInstaller;
3. скомпилирует `Inventera.iss`;
4. создаст `dist\Inventera.exe`.
Установщик PostgreSQL должен находиться здесь:
```text
installer\prerequisites\postgesql.exe
```
Этот файл включается внутрь `dist\Inventera.exe`, поэтому готовый установщик работает без интернета.
## Важно
- Установщик требует права администратора Windows.
- При удалении Inventera база PostgreSQL и файл конфигурации не удаляются автоматически, чтобы не потерять данные.
- Служебные параметры автоматической установки также сохраняются после удаления Inventera, чтобы PostgreSQL оставался доступен при повторной установке приложения.
- Если используется другая основная версия PostgreSQL, измените `PostgreSqlMajor` в `Inventera.iss`.