mit msiexec Deinstallation wird UAC Fehler, obwohl ich Admin-Rechte gesetzt haben

StackOverflow https://stackoverflow.com/questions/4147286

  •  30-09-2019
  •  | 
  •  

Frage

Ich versuche, ein Aktualisierungsprogramm mit msiexec zu bauen, ein Programm zu deinstallieren und dann die neue Version installieren.
Hier ist mein Code:

command = "/x{[uninstall string here]}";
command += "/qn+ /Le c:\\test\\msilog.txt";
ProcessStartInfo psi = new ProcessStartInfo("msiexec");
psi.Arguments = command;
//psi.UseShellExecute = true;
//psi.Verb = "runas";
Process.Start(psi);

Ich habe

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

gesetzt in meinem Manifest, und das ist als die Anwendung Manifest gesetzt. Als ich das betreibe ich das Popup-Box erhalten, der sagt „AppSetup fehlgeschlagen“ und die Protokolldatei sagt

Fehler 1730. Sie müssen ein Administrator sein, um diese Anwendung zu entfernen. Um diese Anwendung zu entfernen, können Sie sich als Administrator anmelden, oder kontaktieren Sie Ihren technischen Support, um Hilfe.

Wenn ich aber als Administrator ausführen cmd und geben Sie

msiexec /x{[uninstall string here]} /qn+ /Le c:\\test\\msilog.txt

Es funktioniert gut und schön.
Was bin ich hier?
(Ich habe auch versucht, diese beiden Linien über uncommenting, so dass eine Art und Weise war ich als Administrator ausgeführt werden gefunden, aber es dann öffnet den UAC-Dialog auf, bevor Sie versuchen, auszuführen, obwohl / qn gesetzt.)

War es hilfreich?

Lösung

Um einen Prozess müssen Sie heben den Benutzer haben genehmigen. Wenn jeder Prozess selbst ohne Zutun des Benutzers erhöhen könnte, wäre es etwas den Zweck der Erhebung besiegen.

Ich weiß nicht, Ihre vollständige Szenario, aber wenn Sie es geschafft, Ihre Updater aus dem lokalen Dienst auszuführen Konto dann sollte dies ohne Interaktion Benutzer arbeiten. Ein paar Möglichkeiten, die in den Sinn kommen, sind durch einen Windows-Dienst, Run / RunOnce Schlüssel der lokalen Dienstkonto installieren oder verwenden psexec mit -s. Natürlich, dies zu erreichen, müssen Sie die richtigen Berechtigungen, sich auf dem Client-Rechner haben.

Viel Glück.

* Eine weitere Sache: Wenn Sie nicht in diese noch ausgesehen haben, können Sie Windows Installer verwenden, um die Installation zu aktualisieren und müssen nicht auf Ihre eigenen schreiben „Updater“. Es gibt 3 verschiedene Arten von Updates (kleines Update, kleineres Update, und Major Upgrade): http://msdn.microsoft.com/en-us/library/aa370579 (VS.85) aspx

Ein wichtiges Upgrade deinstalliert die vorherige Version und installiert die neuere Version, die am ähnlichsten ist, was Sie beschrieben haben, obwohl in den meisten Fällen kleine Updates und kleinere Upgrades sind mehr passen.

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