# Установщик Inventera для Windows Итоговый файл установщика: `dist\Inventera.exe`. ## Что входит в установщик - сервер 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, даже если пользователь ещё не вошёл в систему. При аварийном завершении Планировщик пытается запустить его повторно до пяти раз с интервалом в одну минуту. При обновлении удаляется старый ярлык `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 ``` Скрипт: 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`.