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:
1 parent
2cdb4690e5
commit
bc5d8ad07b
5 files changed
+86
-3
No files matched your search
@@ -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 ''
|
||||
Reference in new issue
Block a user