#Requires -RunAsAdministrator <# .SYNOPSIS Deinstalliert das Starface Outlook Sync Add-in. .DESCRIPTION Entfernt Server, Zertifikate, Scheduled Task, Registry-Eintraege und Dateien. #> param( [string]$InstallDir = "$env:ProgramFiles\StarfaceOutlookSync" ) $ErrorActionPreference = "Stop" function Write-Header($text) { Write-Host "" Write-Host "============================================================" -ForegroundColor Cyan Write-Host " $text" -ForegroundColor Cyan Write-Host "============================================================" -ForegroundColor Cyan Write-Host "" } function Write-Step($text) { Write-Host " [OK] $text" -ForegroundColor Green } function Write-Warn($text) { Write-Host " [!] $text" -ForegroundColor Yellow } Write-Header "Starface Outlook Sync - Deinstallation" # Sicherheitsabfrage Write-Host " Dies entfernt das Starface Outlook Sync Add-in vollstaendig." -ForegroundColor Yellow Write-Host " Installationsverzeichnis: $InstallDir" -ForegroundColor Yellow $confirm = Read-Host " Fortfahren? (j/n)" if ($confirm -ne "j") { Write-Host " Abgebrochen." -ForegroundColor Gray exit 0 } # ============================================================ # Schritt 1: Scheduled Task stoppen und entfernen # ============================================================ Write-Header "Schritt 1: Server stoppen" $taskName = "StarfaceOutlookSyncServer" $task = Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue if ($task) { if ($task.State -eq "Running") { Stop-ScheduledTask -TaskName $taskName Write-Step "Server gestoppt." } Unregister-ScheduledTask -TaskName $taskName -Confirm:$false Write-Step "Scheduled Task entfernt." } else { Write-Warn "Scheduled Task '$taskName' nicht gefunden." } # ============================================================ # Schritt 2: Zertifikate entfernen # ============================================================ Write-Header "Schritt 2: Zertifikate entfernen" $certInfoPath = Join-Path $InstallDir "cert-info.json" if (Test-Path $certInfoPath) { $certInfo = Get-Content $certInfoPath -Raw | ConvertFrom-Json # Localhost-Zertifikat aus dem persoenlichen Store entfernen if ($certInfo.localhostThumbprint) { $cert = Get-ChildItem "Cert:\LocalMachine\My" | Where-Object { $_.Thumbprint -eq $certInfo.localhostThumbprint } if ($cert) { Remove-Item $cert.PSPath -Force Write-Step "Localhost-Zertifikat entfernt." } } # Lokale CA aus dem Root Store entfernen if ($certInfo.caThumbprint) { $caCert = Get-ChildItem "Cert:\LocalMachine\Root" | Where-Object { $_.Thumbprint -eq $certInfo.caThumbprint } if ($caCert) { Remove-Item $caCert.PSPath -Force Write-Step "Lokale CA entfernt." } # Auch aus dem persoenlichen Store $caCertMy = Get-ChildItem "Cert:\LocalMachine\My" | Where-Object { $_.Thumbprint -eq $certInfo.caThumbprint } if ($caCertMy) { Remove-Item $caCertMy.PSPath -Force } } } else { Write-Warn "cert-info.json nicht gefunden. Zertifikate muessen ggf. manuell entfernt werden." } # ============================================================ # Schritt 3: Outlook Add-in Registrierung entfernen # ============================================================ Write-Header "Schritt 3: Outlook-Registrierung entfernen" $outlookVersions = @("16.0", "15.0") foreach ($ver in $outlookVersions) { # HKCU (Einzelplatz / aktueller User) $catalogBasePath = "HKCU:\Software\Microsoft\Office\$ver\WEF\TrustedCatalogs" if (Test-Path $catalogBasePath) { $catalogs = Get-ChildItem $catalogBasePath -ErrorAction SilentlyContinue foreach ($catalog in $catalogs) { $url = Get-ItemProperty -Path $catalog.PSPath -Name "Url" -ErrorAction SilentlyContinue if ($url -and $url.Url -like "*StarfaceOutlookSync*") { Remove-Item $catalog.PSPath -Recurse -Force Write-Step "Outlook $ver Katalog-Registrierung entfernt (HKCU)." } } } # HKLM (Terminal Server / alle User) $catalogBasePathLM = "HKLM:\Software\Microsoft\Office\$ver\WEF\TrustedCatalogs" if (Test-Path $catalogBasePathLM) { $catalogs = Get-ChildItem $catalogBasePathLM -ErrorAction SilentlyContinue foreach ($catalog in $catalogs) { $url = Get-ItemProperty -Path $catalog.PSPath -Name "Url" -ErrorAction SilentlyContinue if ($url -and $url.Url -like "*StarfaceOutlookSync*") { Remove-Item $catalog.PSPath -Recurse -Force Write-Step "Outlook $ver Katalog-Registrierung entfernt (HKLM)." } } } } # ============================================================ # Schritt 4: Firewall-Regel entfernen # ============================================================ Write-Header "Schritt 4: Firewall-Regel entfernen" Remove-NetFirewallRule -DisplayName "Starface Outlook Sync" -ErrorAction SilentlyContinue Write-Step "Firewall-Regel entfernt." # ============================================================ # Schritt 5: Dateien entfernen # ============================================================ Write-Header "Schritt 5: Dateien entfernen" if (Test-Path $InstallDir) { Remove-Item -Path $InstallDir -Recurse -Force Write-Step "Installationsverzeichnis entfernt: $InstallDir" } else { Write-Warn "Verzeichnis nicht gefunden: $InstallDir" } # ============================================================ # Zusammenfassung # ============================================================ Write-Header "Deinstallation abgeschlossen" Write-Host " Das Starface Outlook Sync Add-in wurde entfernt." -ForegroundColor Green Write-Host "" Write-Host " Hinweis: Falls das Add-in im neuen Outlook manuell" -ForegroundColor Gray Write-Host " hinzugefuegt wurde, muss es dort auch manuell entfernt werden:" -ForegroundColor Gray Write-Host " Einstellungen -> Add-Ins verwalten -> Add-In entfernen" -ForegroundColor Gray Write-Host "" Write-Host " Das Starface-Zertifikat wurde NICHT entfernt," -ForegroundColor Yellow Write-Host " da es ggf. von anderen Anwendungen benoetigt wird." -ForegroundColor Yellow Write-Host "" Read-Host "Eingabetaste zum Beenden"