73 lines
2.9 KiB
PowerShell
73 lines
2.9 KiB
PowerShell
# IT Nexus Agent — Sofort-Update auf neues EXE (als Admin ausführen)
|
|
$newExe = "$PSScriptRoot\bin\Release\net8.0-windows\IT-Nexus-Agent.exe"
|
|
$svcExe = "C:\ProgramData\IT Nexus Agent\IT-Nexus-Agent.exe"
|
|
$pfExe = "C:\Program Files\IT Nexus Agent\IT-Nexus-Agent.exe"
|
|
$svcName = "IT Nexus Agent"
|
|
|
|
Write-Host "IT Nexus Agent — Update-Script" -ForegroundColor Cyan
|
|
Write-Host "Neue EXE: $newExe" -ForegroundColor Gray
|
|
|
|
if (-not (Test-Path $newExe)) {
|
|
Write-Host "FEHLER: Release-EXE nicht gefunden. Erst bauen!" -ForegroundColor Red
|
|
Read-Host; exit 1
|
|
}
|
|
|
|
# 1. Tray/Dashboard-Prozesse beenden
|
|
Write-Host "1. Stoppe Dashboard-Prozesse..." -ForegroundColor Yellow
|
|
Get-Process -Name "IT-Nexus-Agent" -ErrorAction SilentlyContinue | Stop-Process -Force
|
|
Start-Sleep -Milliseconds 800
|
|
|
|
# 2. Service stoppen
|
|
Write-Host "2. Stoppe Windows Service..." -ForegroundColor Yellow
|
|
net stop $svcName 2>$null
|
|
Start-Sleep -Seconds 2
|
|
|
|
# 3. EXE an beiden Orten ersetzen
|
|
Write-Host "3. Kopiere neue EXE..." -ForegroundColor Yellow
|
|
$deps = @("IT-Nexus-Agent.dll","IT-Nexus-Agent.runtimeconfig.json",
|
|
"IT-Nexus-Agent.deps.json","Newtonsoft.Json.dll",
|
|
"System.Management.dll","System.ServiceProcess.ServiceController.dll")
|
|
|
|
foreach ($dest in @($svcExe, $pfExe)) {
|
|
if (Test-Path (Split-Path $dest)) {
|
|
Copy-Item $newExe $dest -Force
|
|
foreach ($d in $deps) {
|
|
$src = Join-Path (Split-Path $newExe) $d
|
|
if (Test-Path $src) { Copy-Item $src (Split-Path $dest) -Force }
|
|
}
|
|
Write-Host " OK: $dest" -ForegroundColor Green
|
|
}
|
|
}
|
|
|
|
# 4. Service-Binary-Pfad aktualisieren (falls nötig)
|
|
$regPath = (sc.exe qc $svcName 2>$null | Select-String "BINARY_PATH").ToString().Trim()
|
|
Write-Host "4. Aktueller Service-Pfad: $regPath" -ForegroundColor Gray
|
|
|
|
# Wenn Service auf ProgramData zeigt → auf Program Files umlenken
|
|
if ($regPath -like "*ProgramData*") {
|
|
Write-Host " Migriere Service-Pfad zu Program Files..." -ForegroundColor Yellow
|
|
sc.exe delete $svcName 2>$null
|
|
Start-Sleep -Milliseconds 500
|
|
sc.exe create $svcName binPath= "`"$pfExe`"" start= auto DisplayName= "IT Nexus Agent" 2>$null
|
|
sc.exe description $svcName "Cereda Systems IT Nexus Monitoring Agent" 2>$null
|
|
sc.exe failure $svcName reset= 60 actions= restart/5000/restart/10000/restart/30000 2>$null
|
|
}
|
|
|
|
# 5. Service starten
|
|
Write-Host "5. Starte Windows Service..." -ForegroundColor Yellow
|
|
net start $svcName 2>$null
|
|
Start-Sleep -Seconds 3
|
|
|
|
$svc = Get-Service -Name $svcName -ErrorAction SilentlyContinue
|
|
if ($svc.Status -eq "Running") {
|
|
Write-Host ""
|
|
Write-Host "Update erfolgreich! Service laeuft." -ForegroundColor Green
|
|
Write-Host "Naechster Check-in in max. 60 Sekunden." -ForegroundColor Gray
|
|
} else {
|
|
Write-Host "WARNUNG: Service nicht gestartet. Status: $($svc.Status)" -ForegroundColor Red
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "Druecke Enter zum Schliessen..."
|
|
Read-Host
|