Hersteller-Uninstall vor Cleanup
Erst den offiziellen Uninstall-Mechanismus nutzen, dann pruefen, welche Artefakte bewusst uebrig bleiben. Blindes Wegraeumen erzeugt spaeter schwer erklaerbare Seiteneffekte.
Betrieb
Ein guter Uninstall ist mehr als ein stiller Schalter. Er muss Return Codes, Reste, Benutzerkontext, Detection und moegliche Nacharbeiten sauber zusammenbringen.
Erst den offiziellen Uninstall-Mechanismus nutzen, dann pruefen, welche Artefakte bewusst uebrig bleiben. Blindes Wegraeumen erzeugt spaeter schwer erklaerbare Seiteneffekte.
Wenn ein Paket in AppData, HKCU oder im Benutzerprofil arbeitet, ist der Uninstall ohne Kontextpruefung unvollstaendig.
Eine gute Detection fuer Installationen kann fuer Deinstallation zu streng oder zu locker sein. Pruefe immer, ob nach dem Uninstall noch bewusst vorhandene Reste die Erkennung stoeren.
HKCU- und Profil-Detection lesenAuch beim Entfernen bleiben 0, 3010 oder Herstellercodes relevant. Ein erfolgreicher Uninstall mit Reboot ist betrieblich etwas anderes als ein echter Hard Fail.
Erst wenn Deinstallation, Detection, Reinstall und Logging zusammenpassen, ist das Paket betriebsreif.
$uninstall = 'msiexec.exe /x {PRODUCT-CODE} /qn /L*v c:\logs\uninstall.log'
$proc = Start-Process -FilePath "cmd.exe" -ArgumentList "/c $uninstall" -Wait -PassThru
if ($proc.ExitCode -notin @(0, 3010)) {
throw "Uninstall fehlgeschlagen. ExitCode=$($proc.ExitCode)"
}