2011-08-11 12 views
0

ユーザー選択(ユーザーがディスクから選択したインストーラー)プログラムをインストールできるプログラムを作成したいと考えています。私はProcessクラスを使って実行可能ファイルを実行する方法を知っています。 しかし、ユーザインタラクション(サイレントインストール)なしでプログラムをインストールするには?ユーザーの操作なしでカスタムプログラムをインストールする

+0

あなたは、このようなInstallshieldの、またはWindowsインストーラ(と、特定のインストーラを使用していますMSI)、またはインストーラコードを自分で書いていますか? – stakx

+0

ユーザーが選択するプログラムをインストールしたいと思います。 例: ユーザーは "programName_installer.exe"をダウンロードし、プログラムからそのexeを選択してインストールします。今私はコードからサイレントインストールを実行したいと思います。 – BaconLord

答えて

0

忘れてしまった。 インストーラプログラムを許可した場合、サイレントインストールを保証する方法はありません。

ただし、インストーラがInstallshieldインストーラまたはWindowsインストーラであることがわかっている場合は、何らかの種類の設定ファイルを適切な設定で上書きして強制的にサイレントインストールを実行できる場合があります。

+0

インストーラがサポートしているかどうかを簡単に確認する方法があります。 @BaconLord上記の私の答えをチェックしてください。 – jonathanpeppers

+0

@ジョナサン、そうかもしれませんが、*どんな*インストールプログラムでもサイレントインストールを*常に*受けることができるという*保証はありません。私はそれが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; 
      } 
関連する問題