2016-11-09 1 views
1

Je dois pouvoir installer des rapports Crystal sur les ordinateurs des utilisateurs finaux, mais la sécurité du réseau ne le permet pas sur une connexion utilisateur normale, elle doit donc être exécutée en tant qu'utilisateur différent 'à installer sur chaque bureau.C# Comment puis-je exécuter un package d'installation msi en tant qu'utilisateur différent?

Je suis en train de créer une petite application qui permet à tout utilisateur d'installer des rapports de cristal .. jusqu'à présent j'ai:

 Process p = new Process(); 
     p.StartInfo.FileName = @"C:\cabs\CRRuntime_32bit_13_0_5.msi"; 
     p.StartInfo.Arguments = "/i \"C:\\Application.msi\"/qn"; 
     p.StartInfo.UserName = uname; 
     p.StartInfo.Password = pword; 
     p.StartInfo.Domain = domain; 
     p.StartInfo.UseShellExecute = false; 


     try 
     { 
      p.Start(); 
     } 
     catch(Exception er) 
     { 
      MessageBox.Show(er.Message); 
     } 

Lorsque je tente d'exécuter ce code, je vois le message « spécifié exécutable n'est pas une application valide pour cette plate-forme OS "

Ai-je manqué quelque chose?

CHeers

Répondre

0

MSI n'est pas un fichier exécutable dans Windows. Vous devez appeler msiexec avec vous msi en tant que paramètre

Process p = new Process(); 
p.StartInfo.FileName = @"C:\Windows\System32\msiexec.exe"; 
p.StartInfo.Arguments = @"C:\cabs\CRRuntime_32bit_13_0_5.msi"; 
p.StartInfo.UserName = uname; 
p.StartInfo.Password = pword; 
p.StartInfo.Domain = domain; 
p.StartInfo.UseShellExecute = false; 
+1

merci, tout ce qui manquait était @ "i/C: \ cabs \ CRRuntime_32bit_13_0_5.msi"; juste besoin de l'i/switch pour démarrer l'installateur ... – Andie