Files
vendoo/scripts/uninstall-local-flux.ps1
T
Masterluke77andGitHub 6f48827f4d Vendoo 1.41.2 – Git Ignore Boundary & Module Tracking Hotfix (#18)
* docs: prepare Vendoo 1.41.2 git-ignore boundary hotfix

* fix: track native source modules with root-anchored runtime ignores
2026-07-09 17:09:00 +02:00

115 lines
4.0 KiB
PowerShell

param(
[switch]$NonInteractive,
[switch]$RemoveDownloads
)
$ErrorActionPreference = 'Stop'
Set-StrictMode -Version 2.0
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$VendooDir = Split-Path -Parent $ScriptDir
$LocalAiDir = Join-Path $VendooDir 'local-ai'
$ComfyRoot = Join-Path $LocalAiDir 'comfyui'
$ExtractTemp = Join-Path $LocalAiDir 'extract-temp'
$Downloads = Join-Path $LocalAiDir 'downloads'
$StateFile = Join-Path $LocalAiDir 'install-state.json'
$StartScript = Join-Path $LocalAiDir 'start-local-flux.ps1'
$StopScript = Join-Path $LocalAiDir 'stop-local-flux.ps1'
$TaskName = 'Vendoo Local FLUX'
$LogDir = Join-Path $VendooDir 'logs'
$LogFile = Join-Path $LogDir 'local-flux-uninstall.log'
New-Item -ItemType Directory -Force -Path $LogDir | Out-Null
New-Item -ItemType Directory -Force -Path $LocalAiDir | Out-Null
function Write-Log([string]$Message, [string]$Level = 'INFO') {
$line = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') [$Level] $Message"
Add-Content -LiteralPath $LogFile -Value $line -Encoding UTF8
}
function Write-Utf8NoBom([string]$Path, [string]$Content) {
$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
[System.IO.File]::WriteAllText($Path, $Content, $utf8NoBom)
}
try {
Write-Log 'Deinstallation von lokalem FLUX wurde gestartet.'
if (Test-Path -LiteralPath $StopScript) {
try {
& powershell.exe -NoProfile -ExecutionPolicy Bypass -File $StopScript | Out-Null
Write-Log 'Vorhandenes Stoppskript wurde ausgeführt.' 'OK'
} catch {
Write-Log "Stoppskript meldete: $($_.Exception.Message)" 'WARN'
}
}
try {
$processes = @(Get-CimInstance Win32_Process -ErrorAction SilentlyContinue | Where-Object {
$_.CommandLine -match 'ComfyUI\\main.py' -or
($_.CommandLine -match [regex]::Escape($VendooDir) -and $_.CommandLine -match 'python_embeded\\python.exe')
})
foreach ($process in $processes) {
Stop-Process -Id $process.ProcessId -Force -ErrorAction SilentlyContinue
}
if ($processes.Count -gt 0) { Write-Log "$($processes.Count) ComfyUI-Prozess(e) beendet." 'OK' }
} catch {
Write-Log "Prozessbereinigung meldete: $($_.Exception.Message)" 'WARN'
}
Start-Sleep -Seconds 2
& schtasks.exe /Delete /TN $TaskName /F 2>$null | Out-Null
Write-Log 'Autostart-Aufgabe wurde entfernt oder war nicht vorhanden.' 'OK'
if (Test-Path -LiteralPath $ComfyRoot) {
Remove-Item -LiteralPath $ComfyRoot -Recurse -Force
Write-Log 'ComfyUI und FLUX-Modell wurden entfernt.' 'OK'
}
if (Test-Path -LiteralPath $ExtractTemp) {
Remove-Item -LiteralPath $ExtractTemp -Recurse -Force
Write-Log 'Temporäre Entpackdaten wurden entfernt.' 'OK'
}
foreach ($path in @($StartScript, $StopScript)) {
if (Test-Path -LiteralPath $path) { Remove-Item -LiteralPath $path -Force }
}
if ($RemoveDownloads -and (Test-Path -LiteralPath $Downloads)) {
Remove-Item -LiteralPath $Downloads -Recurse -Force
Write-Log 'Installationsarchive und Teildownloads wurden entfernt.' 'OK'
} else {
Write-Log 'Installationsarchive bleiben für eine schnelle Neuinstallation erhalten.' 'INFO'
}
$state = [ordered]@{
status = 'not-started'
phase = 'uninstalled'
progress = 0
message = 'Lokales FLUX wurde deinstalliert.'
started_at = $null
updated_at = (Get-Date).ToString('o')
heartbeat_at = (Get-Date).ToString('o')
process_id = $PID
elapsed_seconds = 0
can_resume = $false
model_installed = $false
comfy_installed = $false
}
Write-Utf8NoBom -Path $StateFile -Content ($state | ConvertTo-Json -Depth 4)
Write-Log 'Deinstallation erfolgreich abgeschlossen.' 'OK'
exit 0
} catch {
Write-Log $_.Exception.Message 'ERROR'
try {
$failed = [ordered]@{
status = 'failed'
phase = 'error'
progress = 0
message = "Deinstallation fehlgeschlagen: $($_.Exception.Message)"
updated_at = (Get-Date).ToString('o')
heartbeat_at = (Get-Date).ToString('o')
process_id = $PID
}
Write-Utf8NoBom -Path $StateFile -Content ($failed | ConvertTo-Json -Depth 4)
} catch {}
exit 1
}