From 48a7f323153cdcbff0820e6faf3a58d0b60d1782 Mon Sep 17 00:00:00 2001 From: Alexey Date: Sat, 25 Jul 2026 16:55:38 +0300 Subject: [PATCH] Beta_cartrigesg_bd Beta v0.2 --- INVENTERA_INSTALLER.md | 23 ++++++++++------- Inventera.iss | 8 ++++-- build_inventera_installer_windows.bat | 36 ++++++++++++++++----------- installer/download_postgresql.ps1 | 31 ----------------------- installer/prerequisites/README.md | 12 +++------ 5 files changed, 44 insertions(+), 66 deletions(-) delete mode 100644 installer/download_postgresql.ps1 diff --git a/INVENTERA_INSTALLER.md b/INVENTERA_INSTALLER.md index 8c2a19c..0e2f880 100644 --- a/INVENTERA_INSTALLER.md +++ b/INVENTERA_INSTALLER.md @@ -53,7 +53,13 @@ - Python 3 с командой `py`; - Inno Setup 6 или 7; -- доступ в интернет для первого скачивания PostgreSQL. +- заранее скачанный официальный установщик PostgreSQL для Windows x64. + +Перед сборкой скачайте установщик PostgreSQL, переименуйте его в `postgesql.exe` и положите по адресу: + +```text +installer\prerequisites\postgesql.exe +``` Запустить: @@ -63,16 +69,15 @@ build_inventera_installer_windows.bat Скрипт: -1. скачает PostgreSQL 18.4-1, если его ещё нет; -2. проверит цифровую подпись установщика; -3. соберёт сервер через PyInstaller; -4. скомпилирует `Inventera.iss`; -5. создаст `dist\Inventera.exe`. +1. проверит наличие `installer\prerequisites\postgesql.exe`; +2. соберёт сервер через PyInstaller; +3. скомпилирует `Inventera.iss`; +4. создаст `dist\Inventera.exe`. -После первого скачивания PostgreSQL находится здесь: +Установщик PostgreSQL должен находиться здесь: ```text -installer\prerequisites\postgresql-18-windows-x64.exe +installer\prerequisites\postgesql.exe ``` Этот файл включается внутрь `dist\Inventera.exe`, поэтому готовый установщик работает без интернета. @@ -81,4 +86,4 @@ installer\prerequisites\postgresql-18-windows-x64.exe - Установщик требует права администратора Windows. - При удалении Inventera база PostgreSQL и файл конфигурации не удаляются автоматически, чтобы не потерять данные. -- Для обновления версии PostgreSQL измените версию в `installer\download_postgresql.ps1` и при необходимости номер основной версии в `Inventera.iss`. +- Если используется другая основная версия PostgreSQL, измените `PostgreSqlMajor` в `Inventera.iss`. diff --git a/Inventera.iss b/Inventera.iss index f912972..64a0dfa 100644 --- a/Inventera.iss +++ b/Inventera.iss @@ -3,7 +3,7 @@ #define MyAppPublisher "Inventera" #define MyAppExeName "Inventera.Server.exe" #define PostgreSqlMajor "18" -#define PostgreSqlInstaller "installer\prerequisites\postgresql-18-windows-x64.exe" +#define PostgreSqlInstaller "installer\prerequisites\postgesql.exe" [Setup] AppId={{78BAF0DB-D841-49A7-954C-16DCA688B136} @@ -482,9 +482,11 @@ begin if ShouldInstallPostgreSql then begin + WizardForm.PreparingLabel.Caption := + 'Установка PostgreSQL. Это может занять несколько минут, пожалуйста, подождите...'; ExtractTemporaryFile(ExtractFileName(ExpandConstant('{#PostgreSqlInstaller}'))); Success := Exec( - ExpandConstant('{tmp}\postgresql-18-windows-x64.exe'), + ExpandConstant('{tmp}\postgesql.exe'), PostgreSqlInstallParameters, '', SW_SHOW, @@ -498,6 +500,8 @@ begin end; end; + WizardForm.PreparingLabel.Caption := + 'Создание базы данных и сохранение настроек Inventera...'; ExtractTemporaryFile('initialize_inventera_database.ps1'); PowerShellPath := ExpandConstant('{sys}\WindowsPowerShell\v1.0\powershell.exe'); Success := Exec( diff --git a/build_inventera_installer_windows.bat b/build_inventera_installer_windows.bat index b4e75e4..2f77ba9 100644 --- a/build_inventera_installer_windows.bat +++ b/build_inventera_installer_windows.bat @@ -6,40 +6,39 @@ cd /d "%~dp0" set "APP_SPEC=Inventera_windows.spec" set "APP_EXE=dist\Inventera.Server.exe" set "INSTALLER_SCRIPT=Inventera.iss" -set "POSTGRES_INSTALLER=installer\prerequisites\postgresql-18-windows-x64.exe" -set "POSTGRES_DOWNLOAD_SCRIPT=installer\download_postgresql.ps1" +set "POSTGRES_INSTALLER=installer\prerequisites\postgesql.exe" if not exist "%POSTGRES_INSTALLER%" ( - echo PostgreSQL installer is not present. Downloading the signed EDB package... - powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%POSTGRES_DOWNLOAD_SCRIPT%" - if errorlevel 1 ( - echo Failed to download or verify PostgreSQL. - exit /b 1 - ) + echo. + echo ERROR: PostgreSQL installer was not found. + echo Download the official Windows x64 PostgreSQL installer, + echo rename it to postgesql.exe and place it here: + echo %~dp0%POSTGRES_INSTALLER% + goto :fail ) if not exist "picture\logo\main_logo.ico" ( echo Missing installer icon: picture\logo\main_logo.ico - exit /b 1 + goto :fail ) echo Installing Python build dependencies... py -m pip install --upgrade pip -if errorlevel 1 exit /b 1 +if errorlevel 1 goto :fail py -m pip install -r requirements.txt pyinstaller -if errorlevel 1 exit /b 1 +if errorlevel 1 goto :fail echo Building Inventera.Server.exe... py -m PyInstaller --clean --noconfirm "%APP_SPEC%" if errorlevel 1 ( echo Application build failed. - exit /b 1 + goto :fail ) if not exist "%APP_EXE%" ( echo Application executable was not created: %APP_EXE% - exit /b 1 + goto :fail ) set "ISCC_EXE=" @@ -51,17 +50,24 @@ if not defined ISCC_EXE if exist "%ProgramFiles%\Inno Setup 6\ISCC.exe" set "ISC if not defined ISCC_EXE ( echo Inno Setup was not found. Install it from https://jrsoftware.org/isdl.php - exit /b 1 + goto :fail ) echo Building Inventera installer... "%ISCC_EXE%" "%INSTALLER_SCRIPT%" if errorlevel 1 ( echo Installer build failed. - exit /b 1 + goto :fail ) echo. echo Build completed. echo Installer: %~dp0dist\Inventera.exe +pause exit /b 0 + +:fail +echo. +echo Build stopped because of an error. +pause +exit /b 1 diff --git a/installer/download_postgresql.ps1 b/installer/download_postgresql.ps1 deleted file mode 100644 index 8efc2fe..0000000 --- a/installer/download_postgresql.ps1 +++ /dev/null @@ -1,31 +0,0 @@ -[CmdletBinding()] -param( - [string]$Version = '18.4-1', - [string]$Destination = (Join-Path $PSScriptRoot 'prerequisites\postgresql-18-windows-x64.exe') -) - -$ErrorActionPreference = 'Stop' -$destinationDirectory = Split-Path -Parent $Destination -New-Item -ItemType Directory -Path $destinationDirectory -Force | Out-Null - -$url = "https://get.enterprisedb.com/postgresql/postgresql-$Version-windows-x64.exe" -$temporaryFile = "$Destination.download" - -Write-Host "Downloading PostgreSQL $Version from $url" -Invoke-WebRequest -Uri $url -OutFile $temporaryFile -UseBasicParsing - -$signature = Get-AuthenticodeSignature -FilePath $temporaryFile -if ($signature.Status -ne 'Valid') { - Remove-Item -LiteralPath $temporaryFile -Force -ErrorAction SilentlyContinue - throw "PostgreSQL installer signature is not valid: $($signature.Status)" -} - -if ($signature.SignerCertificate.Subject -notmatch 'EnterpriseDB|EDB') { - Remove-Item -LiteralPath $temporaryFile -Force -ErrorAction SilentlyContinue - throw "Unexpected PostgreSQL installer signer: $($signature.SignerCertificate.Subject)" -} - -Move-Item -LiteralPath $temporaryFile -Destination $Destination -Force -$hash = Get-FileHash -LiteralPath $Destination -Algorithm SHA256 -Write-Host "Saved: $Destination" -Write-Host "SHA256: $($hash.Hash)" diff --git a/installer/prerequisites/README.md b/installer/prerequisites/README.md index 55a7458..8b48e90 100644 --- a/installer/prerequisites/README.md +++ b/installer/prerequisites/README.md @@ -1,15 +1,9 @@ # PostgreSQL prerequisite -Перед сборкой сюда автоматически загружается подписанный установщик: +Перед сборкой вручную положите сюда официальный установщик PostgreSQL для Windows x64 под именем: ```text -postgresql-18-windows-x64.exe +postgesql.exe ``` -Команда загрузки вручную: - -```powershell -powershell.exe -NoProfile -ExecutionPolicy Bypass -File installer\download_postgresql.ps1 -``` - -`build_inventera_installer_windows.bat` выполняет этот шаг автоматически и затем включает файл PostgreSQL внутрь установщика `dist\Inventera.exe`. +`build_inventera_installer_windows.bat` проверит наличие этого файла и включит его внутрь установщика `dist\Inventera.exe`. Автоматического скачивания больше нет.