2011-08-26 2 views
2

내 설치에 대한 사용자 정의 작업으로 C#를 사용하여 InstallerClass을 쓰고 있어요, 나는 성공적으로 InstallerClass를 사용하여 외부 EXE (설치)를 실행할 수 있습니다,하지만 난 InstallerClass/quiet를 사용하려고하면, 그것은 않습니다 exe를 설치하지 마십시오. 그러나 명령 프롬프트에 /quiet을 사용하여 자동 모드로 성공적으로 설치할 수 있습니다.자동 설치 사용하여 C#을

C#을 사용하여 자동 모드로 설치하는 방법에 대한 이유가 있습니까?

편집 : 다음은

내가 커밋 메서드 내에서 사용하는 코드입니다 (오버라이드 (override)) :

Process p = new Process(); 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.FileName = pathExternalInstaller; 
p.StartInfo.Arguments = "/quiet"; 
p.Start(); 

감사

다음
+0

일부 소스 코드를 제시해주세요 - ESP. 설치를 위해 외부 EXE를 호출하는 부분. – Yahia

+0

@ Yahia : 내가 사용한 코드를 추가했습니다 ... –

+0

'/ quiet' 옵션을 사용하여 "외부 설치 프로그램"을 직접 실행하려고 했습니까? 명령 프롬프트에서? –

답변

7

을 나는 조용한 설치 및 제거 할 무엇을 사용 :

public static bool RunInstallMSI(string sMSIPath) 
    { 
     try 
     { 
      Console.WriteLine("Starting to install application"); 
      Process process = new Process(); 
      process.StartInfo.FileName = "msiexec.exe"; 
      process.StartInfo.Arguments = string.Format(" /qb /i \"{0}\" ALLUSERS=1", sMSIPath);  
      process.Start(); 
      process.WaitForExit(); 
      Console.WriteLine("Application installed successfully!"); 
      return true; //Return True if process ended successfully 
     } 
     catch 
     { 
      Console.WriteLine("There was a problem installing the application!"); 
      return false; //Return False if process ended unsuccessfully 
     } 
    } 

    public static bool RunUninstallMSI(string guid) 
    { 
     try 
     { 
      Console.WriteLine("Starting to uninstall application"); 
      ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe", string.Format("/c start /MIN /wait msiexec.exe /x {0} /quiet", guid)); 
      startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      Process process = Process.Start(startInfo); 
      process.WaitForExit(); 
      Console.WriteLine("Application uninstalled successfully!"); 
      return true; //Return True if process ended successfully 
     } 
     catch 
     { 
      Console.WriteLine("There was a problem uninstalling the application!"); 
      return false; //Return False if process ended unsuccessfully 
     } 
    } 
+0

오버라이드 내에서 RunInstallMSI를 호출했습니다. Commit for the InstallerClass,하지만 다른 설치가 이미 진행 중이며 응용 프로그램을 설치하는 동안 외부 exe를 설치할 수 없다고 말합니다 ... 어떤 이유로 든 또는 어떤 해결책 ??? –

+0

http://support.microsoft.com/kb/236456 –

1

P는 :

 Process process = new Process(); 
     process.StartInfo.FileName = @"C:\PATH\Setup.exe"; 
     process.StartInfo.Arguments = "/quiet"; 
     process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
     process.Start(); 
     process.WaitForExit();