From 31ee06efa8268f7f59c9e7db92268d0a4eb37221 Mon Sep 17 00:00:00 2001 From: achi Date: Fri, 19 Jul 2024 12:11:57 +1000 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D1=8F?= =?UTF-8?q?=D0=B5=D1=82=D1=81=D1=8F=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=91=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- linux/install.ps1 | 59 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/linux/install.ps1 b/linux/install.ps1 index dc00c2f..bac151d 100644 --- a/linux/install.ps1 +++ b/linux/install.ps1 @@ -11,7 +11,7 @@ param ([string]$version, [switch]$server, [switch]$pollservice, [switch]$force, [switch] $update) Set-StrictMode -Version 1 - +$ErrorActionPreference = "Stop" ################################### # Вспомогательные функции @@ -218,8 +218,52 @@ New-Item -ItemType Directory -Path $configDir -Force if ($server) { wget $serverUrl -O Server.zip - Expand-Archive -LiteralPath 'Server.zip' -DestinationPath $lersDir -Force - Remove-Item -Path 'Server.zip' -Force + + if ($update) + { + Write-Host "Обновляется база данных..." + + # В режиме обновления распакуем сервер во временную папку + # и попытаемся обновить БД. Если не вышло обновиться, завершаем работу. + $lersTempPath = [System.IO.Path]::GetTempPath() + $lersTempPath = Join-Path -Path $lersTempPath -ChildPath "lers" + + if (Test-Path -LiteralPath $lersTempPath) + { + Remove-Item -Path $lersTempPath -Recurse -Force + } + + Expand-Archive -LiteralPath 'Server.zip' -DestinationPath $lersTempPath -Force + Remove-Item -Path 'Server.zip' -Force + + # Обновляем существующую БД + dotnet "$lersTempPath/Server/Lers.Server.dll" cli db-update + + if ($?) + { + # Перемещаем распакованные файлы в финальную папку. + # Предварительно очищаем сервер, чтобы убрать все ставшие ненужными сборки. + + Remove-Item -Path "$lersDir/Server" -Recurse -Force + Remove-Item -Path "$lersDir/Database" -Recurse -Force + Remove-Item -Path "$lersDir/Server.Bootstrapper" -Recurse -Force + Remove-Item -Path "$lersDir/Updater" -Recurse -Force + + Get-ChildItem -Path $lersTempPath | Move-Item -Destination $lersDir -Force + } + else + { + Write-Error "Не удалось обновить базу данных. Обновление прекращено." + exit 3; + } + + } + else + { + Expand-Archive -LiteralPath 'Server.zip' -DestinationPath $lersDir -Force + Remove-Item -Path 'Server.zip' -Force + } + } if ($pollservice) @@ -275,14 +319,9 @@ chown -R $lersUser $dataDir chown -R $lersUser $configDir -if ($update) +if (-not $update) { - # Обновляем существующую БД - dotnet $serverExecutable cli db-update -} -else -{ - # Создаём службы systemd + # Создаём или службы systemd if ($server) {