2013-12-17 41 views
5

Mam ten kod C#:kod C#, aby uruchomić mój plik Installer.exe w trybie cichym, w tle,

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
ProcessStartInfo psi = new ProcessStartInfo(); 
psi.Arguments = "–s –v –qn"; 
psi.CreateNoWindow = true; 
psi.WindowStyle = ProcessWindowStyle.Hidden; 
psi.FileName = desktopPath + "\\" + "MyInstaller_7.1.51.14.exe"; 
Process.Start(psi); 

Pierwszy wiersz po prostu chwyta ścieżkę moim pulpicie, a reszta próbuje uruchomić plik exe instalatora w trybie cichym. Przez tryb cichy mam na myśli, w tle, bez kreatora instalacji lub jakiegokolwiek innego interfejsu podczas instalacji. Argumenty –s –v –qn są tam, aby instalacja działała w trybie cichym.

Problemem jest to, że gdy uruchamiam równowartość dowodzenie powyżej w wierszu polecenia, które brzmi:

C:\Users\ME\Desktop>MyInstaller_7.1.51.14.exe -s -v -qn 

Instalator działa jak chciał, w trybie cichym.

Niestety, problem polega na tym, że próba wykonania tej samej czynności w języku C# z powyższym kodem NIE uruchamia instalatora w trybie cichym. Pojawi się kreator instalacji, który jest BAD dla celów.

Myślę, że może potrzebuję uruchomić to jak usługa przez C# lub pod identyfikatorem 0 użytkowników. Lub z przełącznikiem -i. Nie jestem do końca pewny. Czy ktoś może pomóc?

Po prostu dla wyjaśnienia, moje pytanie brzmi, w jaki sposób napisać kod C#, aby uruchomić mój plik installer.exe w trybie cichym, w tle, bez widocznego interfejsu użytkownika?

Proszę o pomoc.

+0

Jakiego produktu użyłeś do stworzenia instalatora? Nie to powinno mieć znaczenie, ale może pomóc komuś je odtworzyć. –

+1

Czy uważasz, że chcesz utworzyć plik tymczasowy BAT za pomocą tego polecenia w folderze 'C: \ Users \ ... \ Temp \ MyInstaller_7.1.51.14.exe -s -v -qn' i uruchomić go? –

Odpowiedz

2

To jest poprawna odpowiedź:

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.Arguments = "/s /v /qn /min"; 
psi.CreateNoWindow = true; 
psi.WindowStyle = ProcessWindowStyle.Hidden; 
psi.FileName = newRenamedFile; 
psi.UseShellExecute = false; 
Process.Start(psi); 

Emisja została przełączniki zostały brakuje ukośniki.