gitea-install/install-service.ps1

72 lines
2.4 KiB
PowerShell

#Requires -Version 5.1
#Requires -RunAsAdministrator
$script:ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
Set-Location $script:ScriptDir
. "$script:ScriptDir\lib\common.ps1"
$ErrorActionPreference = "Stop"
$TaskName = "Gitea"
try {
Test-Dependencies
if (-not (Test-Path ".env")) {
throw "Файл .env не найден. Сначала выполните .\deploy.ps1 install"
}
$startScript = Join-Path $script:ScriptDir "start.ps1"
$stopScript = Join-Path $script:ScriptDir "stop.ps1"
$existing = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue
if ($existing) {
Write-Warn "Задача '$TaskName' уже существует. Перерегистрация..."
Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false
}
Write-Info "Регистрация задачи автозапуска: $TaskName"
$startAction = New-ScheduledTaskAction `
-Execute "powershell.exe" `
-Argument "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File `"$startScript`""
$stopAction = New-ScheduledTaskAction `
-Execute "powershell.exe" `
-Argument "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File `"$stopScript`""
$startupTrigger = New-ScheduledTaskTrigger -AtStartup
$startupTrigger.Delay = "PT1M"
$principal = New-ScheduledTaskPrincipal `
-UserId "SYSTEM" `
-LogonType ServiceAccount `
-RunLevel Highest
$settings = New-ScheduledTaskSettingsSet `
-AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries `
-StartWhenAvailable `
-ExecutionTimeLimit ([TimeSpan]::Zero)
Register-ScheduledTask `
-TaskName $TaskName `
-Action $startAction `
-Trigger $startupTrigger `
-Principal $principal `
-Settings $settings `
-Description "Автозапуск Gitea (Docker Compose)" | Out-Null
Write-Info "Запуск Gitea..."
& $startScript
Write-Info "Задача '$TaskName' установлена. Gitea будет запускаться при загрузке Windows."
Write-Info "Управление:"
Write-Info " Start-ScheduledTask -TaskName $TaskName"
Write-Info " Stop-ScheduledTask -TaskName $TaskName"
Write-Info " Get-ScheduledTask -TaskName $TaskName"
}
catch {
Write-Err $_.Exception.Message
exit 1
}