Deinstallation: es gab keine

Wer das Toolkit testweise installiert hatte, konnte es nur von Hand wieder
abraeumen - zwei Aufgaben im Aufgabenplaner, ein laufender Prozess, zwei
Ordner. Das ist jetzt ein Skript.

Die Daten bleiben per Vorgabe stehen: in der Datenbank liegen Chatverlaeufe,
und die sind nach einer versehentlichen Deinstallation weg. -AuchDaten
raeumt auch die ab.

Getestet an einer laufenden Installation: Aufgaben weg, Prozess beendet,
Programm geloescht, Port 4792 frei.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AhVSfMFdWnXKCv5JfLnArZ
This commit is contained in:
ZeasyAlexandClaude Opus 5 committed 2026-09-09 20:05:12 +02:00
1 parent 2cdb4690e5
commit bc5d8ad07b
5 files changed
+86 -3

No files matched your search

+78
View File
@@ -0,0 +1,78 @@
# 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 ''