2011-08-11 26 views
0

我想創建一個程序,可以安裝用戶選擇的程序(用戶從磁盤選擇安裝程序)。我知道如何使用Process類來運行可執行文件。 但是如何在沒有用戶交互的情況下安裝程序(無提示安裝)?安裝無用戶交互的自定義​​程序

+0

你使用特定的安裝程序,如Installshield的,或Windows Installer( MSI),還是你自己編寫安裝程序代碼? – stakx

+0

我想安裝用戶選擇的任何程序。 例如: 用戶下載「programName_installer.exe」並從我的程序中選擇該exe文件並點擊安裝。現在我想從代碼執行無提示安裝。 – BaconLord

回答

0

忘掉它吧。如果您允許任何安裝程序,則無法保證無提示安裝。

但是,如果您知道安裝程序是Installshield安裝程序或Windows安裝程序,則可以使用適當的設置覆蓋某種配置文件以強制執行無提示安裝。

+0

有簡單的方法來檢查安裝程序是否支持它。 @BaconLord檢查我的答案。 – jonathanpeppers

+0

@Jonathan,可能是這樣,但不管怎樣,* no *都保證您可以*隨時*使用* any *安裝程序進行無提示安裝。我認爲這是OP應該理解的第一件事情;一旦他這樣做了,他可以繼續*嘗試*無提示安裝*如果可能* ...您的答案提供了非常好的信息。 – stakx

1

您計劃運行的安裝程序需要支持靜默安裝。如果他們不這樣做,你將會遇到困難

幸運的是,大多數安裝程序允許與MSI相同的命令行參數。嘗試運行安裝程序programName_installer.exe /?並查看它是否爲您提供幫助彈出窗口。

Here是MSI命令行選項的列表。 \qn刪除它的所有UI交互。

此外,當您運行過程

,你需要這些設置,以確保沒有控制檯彈出窗口給用戶:

  ProcessStartInfo info = new ProcessStartInfo("programName_installer.exe", @"\qn"); 
      info.CreateNoWindow = true; 
      info.WindowStyle = ProcessWindowStyle.Hidden; 
      info.UseShellExecute = false; 
      info.RedirectStandardError = 
       info.RedirectStandardOutput = true; 

      using (Process process = Process.Start(info)) 
      { 
       process.WaitForExit(); 

       string output = process.StandardOutput.ReadToEnd(); 

       string error = process.StandardError.ReadToEnd(); 

       int exitCode = process.ExitCode; 
      }