Question

Je suis capable de réussir à désinstaller une application tierce via la ligne de commande et par l'intermédiaire d'un personnalisé Inno Setup d'installation.

Exécution de ligne de commande:

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

Inno Setup De Commande:

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

Je suis également en mesure de désinstaller l'application par programme lors de l'exécution du code C# suivant en mode de débogage.

Le Code C#:

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();

Le même code en C#, cependant, produit la suite de l'échec de sortie lors de l'exécuter comme un compilé, déployé Service Windows:

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

Commentaires Supplémentaires:

  • Le Service Windows qui est la délivrance la commande de désinstallation est en cours d'exécution sur la même machine que le code testé en Mode de Débogage.Les Fenêtres Le Service est en cours d'exécution/connecté en tant que Compte système Local.
  • J'ai consulté mon application se connecte et j'ai validé le fait que les commande exécutée arguments sont thhe même en debug et release mode.
  • J'ai consulté l'Observateur d'Événements mais il n'offre pas d'indices.

Pensées?Toute aide serait grandement appréciée.Merci.

Était-ce utile?

La solution 3

Merci à ceux qui offrent de l'aide.Cela semble être un problème d'autorisations.J'ai mis à jour mon service pour s'exécuter sous un compte d'Administrateur et il a réussi à désinstaller l'application tierce.Orion point, si le compte Système Local est un compte qui a un accès complet au système -- http://technet.microsoft.com/en-us/library/cc782435.aspx -- il ne semble pas avoir les droits nécessaires pour effectuer la désinstallation.

[Voir les autres commentaires pour l'article complet au sujet de la LocalSystem être en mesure de désinstaller l'application pour laquelle il est installé.]

Autres conseils

Étape 1: De vérifier la MSI fichiers journaux des erreurs

Je me méfie que votre problème est dû à la course en tant que LocalSystem.

Le compte Système Local n'est pas la même chose qu'un compte d'utilisateur normal qui arrive à avoir les droits admin.Il n'a pas accès au réseau, et de son interaction avec le registre et les fichiers système est très différent.

À partir de la mémoire toutes les demandes de lecture/écriture de votre répertoire home " ou HKCU dans le registre fait aller dans le profil utilisateur par défaut, ou dans le cas de temp dirs, c:\windows\temp

J'ai rencontré des problèmes similaires dans le passé avec l'installation d'un client en utilisant le compte SYSTÈME à installer et cela a été à l'origine de toutes sortes de problèmes d'autorisation pour les utilisateurs non-administrateurs.

MSI fichiers journaux ne sont pas vraiment aider si l'application n'apparaît pas "installé", je vous suggère de commencer avec la capture de la sortie de MSIINV.EXE sous le compte système, qui vous permettra d'obtenir un "Inventaire" des programmes actuellement installés (ou ce que l'utilisateur voit installé) http://blogs.msdn.com/brada/archive/2005/06/24/432209.aspx

Je pense que vous avez probablement besoin de revenir à la planche à dessin et voir si vous avez vraiment besoin le service windows pour faire la désinstallation.Vous aurez probablement trouver toutes sortes de UAC de Vista questions si vous ne l'avez pas déjà...

Ce qui est bizarre.LocalSystem a certainement les privilèges d'installer des applications (c'est la mise à Jour de Windows et des logiciels de déploiement dans Active Directory travail), de sorte qu'il devrait être en mesure de le désinstaller ainsi.

Peut-être l'application est d'abord installé par l'utilisateur au lieu d'une machine?

@Paul Lalonde

L'application du programme d'installation est enveloppé dans un personnalisé InnoSetup programme d'installation.La InnoSetup programme d'installation, à son tour, est exécutée manuellement par l'utilisateur connecté.Cela dit, la désinstallation est déclenché par un service qui s'exécute sous le compte Système Local.

Apparemment, vous avez été pour quelque chose.J'ai mis en place un test rapide qui a le service qui s'exécute sous le compte LocalSystem installer ainsi que de désinstaller l'application et tout a fonctionné parfaitement.Vous aviez raison.Le compte LocalSystem est nécessaire de désinstaller des autorisations pour les applications dans lesquelles il s'installe.Vous avez sauvé la journée.Merci pour les commentaires!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top