Frage

Ich kann eine Drittanbieteranwendung über die Befehlszeile und über ein benutzerdefiniertes Inno Setup-Installationsprogramm erfolgreich deinstallieren.

Befehlszeilenausführung:

MSIEXEC.exe /x {14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn

Inno-Setup-Befehl:

[Run]
Filename: msiexec.exe; Flags: runhidden waituntilterminated; 
Parameters: "/x {{14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn";
StatusMsg: "Uninstalling Service...";

Ich kann die Anwendung auch programmgesteuert deinstallieren, wenn ich den folgenden C#-Code im Debug-Modus ausführe.

C#-Code:

string fileName = "MSIEXEC.exe";
string arguments = "/x {14D74337-01C2-4F8F-B44B-67FC613E5B1F} /qn";

ProcessStartInfo psi = new ProcessStartInfo(fileName, arguments)
{
    CreateNoWindow = true,
    UseShellExecute = false,
    RedirectStandardOutput = true
};

Process process = Process.Start(psi);
string errorMsg = process.StandardOutput.ReadToEnd();
process.WaitForExit();

Derselbe C#-Code erzeugt jedoch die folgende Fehlerausgabe, wenn er als kompilierter, bereitgestellter Windows-Dienst ausgeführt wird:

"This action is only valid for products that are currently installed."

Zusätzliche Kommentare:

  • Der Windows -Dienst, der den Befehl Deinstall ausgibt, wird auf demselben Computer ausgeführt wie der Code, der im Debug -Modus getestet wird.Der Windows -Dienst wird als lokales Systemkonto ausgeführt/angemeldet.
  • Ich habe meine Anwendungsprotokolle konsultiert und validiert, dass die ausgeführten Befehlsargumente sowohl im Debug- als auch im Release -Modus gleich sind.
  • Ich habe den Event -Viewer konsultiert, aber er bietet keine Hinweise.

Gedanken?Jede Hilfe wäre sehr dankbar.Danke.

War es hilfreich?

Lösung 3

Dank denen, Hilfe anbieten. Dies scheint ein Problem mit den Berechtigungen zu sein. Ich habe meinen Dienst aktualisiert unter einem Administratorkonto ausgeführt werden und es konnte erfolgreich die Drittanbieter-Anwendung deinstallieren. Um Orion Punkt, obwohl das lokale Systemkonto ist ein leistungsstarkes Konto, die vollen Zugriff auf das System hat - http://technet.microsoft.com/en-us/library/cc782435.aspx - es scheint nicht die erforderlichen Rechte zu haben, um die deinstallation durchführen

.

[Siehe zusätzliche Kommentare für ganze Geschichte in Bezug auf den Local der Lage, Anwendung zu deinstallieren, für die es installiert ist.]

Andere Tipps

Schritt 1: die MSI-Fehlerprotokolldateien

Ich bin misstrauisch, dass Ihr Problem zu laufen als Localsystem zurückzuführen ist.

Das lokale Systemkonto ist nicht das gleiche wie ein normales Benutzerkonto, das über Administratorrechte haben, geschieht. Es hat keinen Zugriff auf das Netzwerk und seine Interaktion mit der Registrierung und das Dateisystem ist ganz anders.

Aus dem Gedächtnis alle Anfragen zu Ihrem Home-Verzeichnis "oder HKCU unter der Registrierung lesen / schreiben tatsächlich gehen entweder in dem Standardbenutzerprofil, oder im Fall von temporären Verzeichnissen, c:\windows\temp

ich auf ähnliche Probleme in der Vergangenheit mit der Installation gekommen sind, war ein Kunde das SYSTEM-Konto zu installieren und dies war es, alle Arten von Berechtigungsprobleme verursacht für Benutzer ohne Administratorrechte.

MSI-Log-Dateien werden helfen, nicht wirklich, wenn die Anwendung nicht erscheint „installiert“, ich würde vorschlagen, beginnend mit der Ausgabe des MSIINV.EXE unter dem Systemkonto erfassen, dass Ihnen ein „Inventar“ der erhält derzeit installierten Programme (oder das, was der Benutzer installiert sieht) http: / /blogs.msdn.com/brada/archive/2005/06/24/432209.aspx

Ich glaube, Sie wahrscheinlich wieder auf das Reißbrett gehen und sehen, ob Sie wirklich den Windows-Dienst müssen die Deinstallation zu tun. Sie werden wahrscheinlich in allen Arten von Vista UAC Problemen kommen, wenn Sie nicht bereits haben ...

Das ist bizarr. Localsystem hat auf jeden Fall die Privilegien Anwendungen zu installieren (das ist, wie Windows Update und Softwarebereitstellung in Active Directory Arbeit), so sollte es auch deinstallieren können.

Vielleicht ist die Anwendung zunächst pro Benutzer installiert statt pro-Maschine?

@ Paul Lalonde

Das Installationsprogramm der App ist in einem benutzerdefinierten InnoSetup Installer gewickelt. Der InnoSetup Installateur, die wiederum manuell durch den angemeldeten Benutzer ausgeführt. Das heißt, die Deinstallation von einem Dienst trigged wird unter dem lokalen Systemkonto ausgeführt wird.

Offenbar waren Sie auf etwas. Ich habe eine schnelle Prüfung, die der Dienst unter dem lokalen laufen hatte Konto installieren sowie die Anwendung deinstallieren und alles funktionierte einwandfrei. Sie waren korrekt. Das lokale Systemkonto ist für Anwendungen deinstallieren Berechtigungen erforderlich, in dem es installiert wird. Sie rettete die Situation. Danke für die Rückmeldung!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top