2016-05-09 1 views
0

Je veux faire l'installation silencieuse. Je connais la commande qui fait cela "msiexec.exe/qn", mais je ne peux pas le faire si mon application ne fonctionne pas en tant qu'administrateur. Note: - mon installateur .msi est créé en utilisant Wix ToolsetComment faire une installation silencieuse sans UAC ou App Est-ce que l'exécution est en tant qu'administrateur?

Process process = new Process 
     { 
      StartInfo = 
      { 
       FileName = @"msiexec.exe", 
       Arguments = string.Format(@"/i ""E:\Build 16\ColiboConnect.msi"" /qn"), 
       UseShellExecute = false, 
       RedirectStandardInput = true, 
       RedirectStandardOutput = true, 
       RedirectStandardError = true, 
       CreateNoWindow = false 
      } 
     }; 
     process.Start(); 
     process.WaitForExit(); 
+0

Si cela était possible, ne croiriez-vous pas que beaucoup de méchants l'exploiteraient? – rene

+0

startInfo.Verb = "runas"; –

+1

vous devez également utiliser UseShellExecute = true pour que le verbe "runas" fonctionne. J'envisagerais également d'envoyer "/ l * v logpath \ logfile.txt" à la ligne cmd de msiexec afin que vous puissiez obtenir un fichier journal quelque part. –

Répondre

0

Nous avons résolu notre problème en utilisant le service Windows. Notre application va télécharger le nouveau msi, puis appeler un service WCF, passant le chemin de l'installateur et le service installera la nouvelle version sans aucun problème car notre service fonctionne sous le système de compte local et je pense que c'est la seule solution supportée

1

Vous demandez l'installation MSI silencieuse donc MSI n'affiche aucune interface utilisateur - ni la boîte de dialogue UAC.

Votre processus parent doit déjà être exécuté avec des privilèges élevés, ou vous devez demander l'élévation à partir de Windows et utiliser le jeton de privilèges pour exécuter un nouveau processus.