2014-09-03 196 views
1

我想從C#應用程序調用命令提示符,然後命令提示符將運行一個參數來生成一個nsis安裝程序。如何從C#應用程序調用cmd來生成nsis安裝程序?

因此,這是生成安裝程序的C#應用​​程序內的功能:

private bool GenerateInstaller(string pStrVersion) 
    { 
     bool IsSuccess = false; 

     Process process = new Process(); 
     ProcessStartInfo startInfo = new ProcessStartInfo(); 
     startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; 
     startInfo.FileName = "cmd.exe"; 

     System.Diagnostics.Debug.WriteLine("Installer version: " + pStrVersion); 

     if(pStrVersion == "PRO") 
     { 
      startInfo.Arguments = @"""C:\Program Files (x86)\NSIS\makensis.exe"" ""Z:\Project\BuildArea\workspace\installer\Setup_PRO.nsi"""; 
      System.Diagnostics.Debug.WriteLine("argument: " + startInfo.Arguments); 
      process.StartInfo = startInfo; 
      process.Start(); 
      IsSuccess = true; 
     } 
     else 
     { 
      startInfo.Arguments = @"""C:\Program Files (x86)\NSIS\makensis.exe"" ""Z:\Project\BuildArea\workspace\installer\Setup_STD.nsi"""; 
      System.Diagnostics.Debug.WriteLine("argument: " + startInfo.Arguments); 
      process.StartInfo = startInfo; 
      process.Start(); 
      IsSuccess = true; 
     } 

     return IsSuccess; 
    } 

問題是,當我嘗試運行C#應用程序,它不會生成安裝程序。 我第一次認爲字符串參數是錯誤的。所以,我打開了一個新的命令提示符,並嘗試直接運行參數並且它可以工作。

你知道我的代碼有什麼問題嗎?

回答

4

爲什麼不直接啓動makensis.exe?

startInfo.FileName = @"C:\Program Files (x86)\NSIS\makensis.exe"; 
startInfo.Arguments = @"Z:\Project\BuildArea\workspace\installer\Setup_PRO.nsi"; 
process.StartInfo = startInfo; 
process.Start(); 
相關問題