diff --git a/.gitignore b/.gitignore index 3f75e95..997839b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,10 @@ bin/ obj/ publish/ +# Skripte aus publish/ im Root behalten +!install-service.ps1 +!uninstall-service.ps1 + # Visual Studio .vs/ *.user diff --git a/install-service.ps1 b/install-service.ps1 new file mode 100644 index 0000000..0457138 --- /dev/null +++ b/install-service.ps1 @@ -0,0 +1,42 @@ +#Requires -RunAsAdministrator + +$ServiceName = "MailPrint" +$DisplayName = "MailPrint - E-Mail & WebAPI zu Drucker" +$Description = "Druckt PDF-Anhaenge automatisch aus E-Mails (IMAP/POP3) und per REST API auf Windows-Drucker." +$ExePath = Join-Path $PSScriptRoot "publish\MailPrint.exe" + +if (-not (Test-Path $ExePath)) { + Write-Error "MailPrint.exe nicht gefunden: $ExePath" + exit 1 +} + +$existing = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue +if ($existing) { + Write-Host "Dienst '$ServiceName' ist bereits installiert. Stoppe zuerst..." -ForegroundColor Yellow + Stop-Service -Name $ServiceName -Force -ErrorAction SilentlyContinue + Start-Sleep -Seconds 2 +} + +Write-Host "Installiere Dienst '$ServiceName'..." -ForegroundColor Cyan + +New-Service ` + -Name $ServiceName ` + -DisplayName $DisplayName ` + -Description $Description ` + -BinaryPathName $ExePath ` + -StartupType Automatic | Out-Null + +sc.exe failure $ServiceName reset= 3600 actions= restart/5000/restart/10000/restart/30000 | Out-Null + +Write-Host "Starte Dienst..." -ForegroundColor Cyan +Start-Service -Name $ServiceName + +$svc = Get-Service -Name $ServiceName +Write-Host "" +Write-Host "Ergebnis:" -ForegroundColor Green +Write-Host " Name: $($svc.Name)" +Write-Host " Status: $($svc.Status)" +Write-Host " Start: $($svc.StartType)" +Write-Host "" +Write-Host "Fertig. MailPrint laeuft jetzt als Windows-Dienst." -ForegroundColor Green +Write-Host "Logs: $(Join-Path $PSScriptRoot 'publish\logs')" diff --git a/uninstall-service.ps1 b/uninstall-service.ps1 new file mode 100644 index 0000000..76268bf --- /dev/null +++ b/uninstall-service.ps1 @@ -0,0 +1,29 @@ +#Requires -RunAsAdministrator + +$ServiceName = "MailPrint" + +$svc = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue +if (-not $svc) { + Write-Host "Dienst '$ServiceName' ist nicht installiert." -ForegroundColor Yellow + exit 0 +} + +if ($svc.Status -ne "Stopped") { + Write-Host "Stoppe Dienst '$ServiceName'..." -ForegroundColor Cyan + Stop-Service -Name $ServiceName -Force + Start-Sleep -Seconds 3 +} + +Write-Host "Entferne Dienst '$ServiceName'..." -ForegroundColor Cyan +sc.exe delete $ServiceName | Out-Null + +Start-Sleep -Seconds 2 + +$check = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue +if ($check) { + Write-Error "Dienst konnte nicht entfernt werden. Bitte manuell pruefen." + exit 1 +} + +Write-Host "" +Write-Host "Dienst '$ServiceName' erfolgreich deinstalliert." -ForegroundColor Green