# Entfernt abdulive wieder. # # .\uninstall.ps1 Programm und Autostart weg, Daten bleiben # .\uninstall.ps1 -AuchDaten alles weg, auch Datenbank und Clips # # Die Daten bleiben absichtlich per Vorgabe stehen: in der Datenbank liegen # Chatverlaeufe, und die sind nach einer versehentlichen Deinstallation nicht # wiederherstellbar. Wer neu installiert, findet seine Einrichtung wieder. [CmdletBinding()] param( [string]$Ziel = (Join-Path $env:LOCALAPPDATA 'Programs\abdulive'), [switch]$AuchDaten ) $ErrorActionPreference = 'Stop' $daten = Join-Path $env:LOCALAPPDATA 'abdulive' function Schritt($text) { Write-Host "==> $text" -ForegroundColor Cyan } function Hinweis($text) { Write-Host " $text" -ForegroundColor DarkGray } Schritt 'Autostart entfernen' $aufgaben = Get-ScheduledTask -TaskName 'abdulive', 'abdulive-update' -ErrorAction SilentlyContinue if ($aufgaben) { foreach ($a in $aufgaben) { try { Stop-ScheduledTask -TaskName $a.TaskName -ErrorAction SilentlyContinue } catch { } Unregister-ScheduledTask -TaskName $a.TaskName -Confirm:$false Hinweis "Aufgabe `"$($a.TaskName)`" entfernt." } } else { Hinweis 'Keine Aufgaben gefunden.' } Schritt 'Laufenden Daemon beenden' $prozesse = Get-Process node -ErrorAction SilentlyContinue | Where-Object { $_.Path -and $_.Path.StartsWith($Ziel, 'OrdinalIgnoreCase') } if ($prozesse) { foreach ($p in $prozesse) { Stop-Process -Id $p.Id -Force Hinweis "node.exe (PID $($p.Id)) beendet." } # Windows gibt die Dateisperren nicht sofort frei Start-Sleep -Milliseconds 800 } else { Hinweis 'Lief nicht.' } Schritt 'Programm entfernen' if (Test-Path $Ziel) { Remove-Item -Recurse -Force $Ziel Hinweis $Ziel } else { Hinweis 'War nicht installiert.' } if ($AuchDaten) { Schritt 'Daten entfernen' if (Test-Path $daten) { Remove-Item -Recurse -Force $daten Hinweis "$daten (Datenbank, Clips, Sprachmodell, Protokolle)" } else { Hinweis 'Nichts da.' } } elseif (Test-Path $daten) { $mb = [math]::Round((Get-ChildItem $daten -Recurse -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum / 1MB) Write-Host '' Write-Host "Die Daten bleiben liegen ($mb MB):" -ForegroundColor Yellow Write-Host " $daten" Write-Host ' Darin: Datenbank mit Chatverlaeufen, Clips, Sprachmodell, Einrichtung.' Write-Host '' Write-Host 'Auch die weg:' Write-Host " Remove-Item -Recurse -Force '$daten'" } Write-Host '' Write-Host 'abdulive ist entfernt.' -ForegroundColor Green Write-Host ''