Hallo,
ich würde gerne ein Programm aus der Softwareliste programmgesteuert entfernen/deinstallieren lassen.
In dem Programmordner befindet sich zwar eine uninst.exe, diese funktioniert allerdings nicht.
Die Frage ist nun, WAS genau wird ausgelöst (und wie kann man es im Programm ausführen), wenn man unter Windows auf den "Entfernen"-Button in der Softwareliste klickt.
Habe schon diverse Sachen mit WMI ausprobiert, dies funktioniert allerdings nur mit Software, welche spezielle (ich komme nicht dahinter welche genau) Eigenschaften erfüllen.
Auch angeschaut habe ich mir MSI-Packages, würde es ein MSI-Package zu dem Programm geben könnte man es mit einem /x Parameter deinstallieren, ist allerdings wie gesagt nicht vorhanden... was nun?
Vielen Dank und lieben Gruß!
Googel mal nach deinem Titel. Der erste Treffer scheint vielversprechend zu sein.
Nein, das löscht nur den Eintrag in der Liste, das Programm an sich bleibt installiert.
Habe die korrekt *.exe zum deinstallieren gefunden, werde es zunächst einmal damit implementieren.
Da dies keine wirklich elegante Lösung ist würde ich trotzdem gerne auf eure Lösungen warten.
Gruß
Hatte es so verstanden, dass du die Software nur aus der Softwareliste entfernen willst, dieser Begriff häufiger in deinem Beitrag aufgetaucht ist.
Was passiert, wenn du auf den "Entfernen"-Button klickst ist abhängig von der Software. Grundsätzlich wird aber das ausgeführt was in "UninstallString" unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{Schlüssel des Programms}\ steht. Wenn dort allerdings auch nur die kaputte uninst.exe aufgerufen wird, sieht es eher schlecht für dich aus. Im nachhinein lässt sich ja nicht mehr nachvollziehen, wo sich das Programm überall verewigt hat (Registry, System-Order etc.).
Mein Vorschlag wäre dann, eine saubere VM aufzusetzen und das Setup des Programms mit FileMon und RegMon zu beobachten. Dann kannst du eine Deinstallationsroutine nachbauen. Das wird aber wahrscheinlich mit einigem Aufwand verbunden sein.
/Edit: Wobei das vermutlich noch uneleganter wäre. 😉 Was stört dich denn an deiner aktuellen Lösung?
Es gab eine andere Datei "NTRmv.exe", diese ist die eigentliche Deinstallations-Datei, nicht die uninst.exe, vielleicht wird letztere durch erstere mit bestimmten Parametern aufgerufen oder ähnliches, aber ist ja auch egal.
Wenn der Entfernen-Button auch nichts anderes macht außer die passende Datei für die Deinstallation aus der Registry zu suchen, dann kann ich diese ja auch direkt verwenden...
Danke! 😃
Zum Deinstallieren suchst du dir den entsprechenden ProductCode aus HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall raus und ließt dir den UninstallString aus und führst das ganze aus.
Bei MSI-Paketen reicht es auch schon aus, wenn du
msiexec.exe /x {ProductCode}
ausführst. Eventuell noch Option /q hinzufügen für Silent. Für weitere Hilfe kannst du die MSDN befragen oder einfach mal msiexec /? in der Console eingeben.
Bei nicht MSI-Paketen muss es immer eine entsprechende Uninstall.exe (oder Setup.exe mit Uninstall-Option) geben.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...