2013-09-22 2 views
1

제목과 마찬가지로 WPF C#으로 작성된 내 응용 프로그램을 통해 (예 : inkscape)을 사용하여 .exe 을 자동으로 설치하려고합니다. 문제는, 내가 사용하는 설치 프로세스가 항상 예외를 반환하고 실패한다는 것입니다.WPF에서 외부 NSIS exe를 설치하는 방법 C#

public static bool StartInstall(string pathtofile) 
    { 
     try 
     { 
      Process process = new Process(); 
      process.StartInfo.FileName = "Temp.exe"; 
      process.StartInfo.Arguments = string.Format(" /S", pathtofile); 
      process.Start(); 
      process.WaitForExit(); 
      Console.WriteLine("Silent Install was successful."); 
      return true; 
     } 
     catch 
     { 
      MessageBox.Show("Error!"); 
      return false; 
     } 
    } 

this 웹 사이트에 따르면, 자동을위한 스위치가 NSIS 포장 예전 친구를 위해 설치/S입니다 : 여기

내가 사용하는 코드입니다. 나는 구문에서 뭔가 잘못하고 있는지 확실하지 않습니다.

내가 사용하고있는 코드는 this에서 왔습니다. .msi 패키지에서 작동합니다. 어쩌면 그것은 NSIS exes에서 작동하지 않을 수 있습니까?

나는 그것이 작동하지 않는 이유에 대해 상대적으로 단서가 없습니다. 위의 코드는 "process.Start()"줄에서 충돌합니다. 아마도 가장 알려지지 않은 명령 때문일 것입니다.

누군가가 NSIS 설치 프로그램을 위해 프로세스를 시작하는 방법에 대해 약간의 빛을 분쇄 할 수 있다면 고맙겠습니다.

+1

일부 설치 관리자는 관리자 권한이 필요합니다. 설치 프로그램을'UseShellExecute = true' 및'Verb = "runas"'와 함께 실행해야합니다. [this] (http://stackoverflow.com/questions/133379/elevating-process-privilege-programatically) 스레드를 확인하십시오. – csharpfolk

+0

실제로 관리자 권한 부분에 맞습니다! 감사 – zaedas99

답변

0

나는 csharpfolk를 사용하여이 문제를 해결했습니다.

내 문제는 두 가지 원인의 조합이었다

첫째, 관리자 권한이 실제로 응용 프로그램을 실행하는 데 필요한했다.

둘째, "process.StartInfo.Filename"줄에는 전체 파일 경로가이 필요합니다. "C : \ Downloads \ Temp.exe"로 변경하자마자 작동했습니다.