0

アプリケーション(WPFアプリケーション)のインストールの一環として、SQLServerと前提条件をインストールする必要があります。したがって、ユーザーがSQL Serverをインストールするオプションを選択する場合、アプリケーションのインストール中に、セットアップで提供されるconfiguration.iniファイルを使用してサイレントにインストールする必要があります。

そこで、SQLサーバーを実行するコマンドを含むコードを使用して「InstallSQL.bat」というバッチファイルを作成しました。

これで、ユーザーがSQLサーバーのインストールを選択すると、インストールコードからバッチファイルが実行されます。コードは以下の通りです

        int ExitCode;
        ProcessStartInfo ProcessInfo;
        Process process;            

        ProcessInfo = new ProcessStartInfo(batchFilePath);
        ProcessInfo.CreateNoWindow = true;
        ProcessInfo.UseShellExecute = false;

        ProcessInfo.WorkingDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        // *** Redirect the output ***
        ProcessInfo.RedirectStandardError = true;
        ProcessInfo.RedirectStandardOutput = true;
        process = Process.Start(ProcessInfo);
        process.WaitForExit();
        MessageBox.Show("ExitCode: " + process.ExitCode);

セットアップを実行すると、SQL Serverのインストール時に、SQL Serverセットアップファイルが抽出され、インストールが進行中であることを示すコンソールウィンドウが開きます。問題は、このコンソールウィンドウにしばらくすると、「stackoverflowexceptionのためにプロセスが終了しました」というメッセージが表示されることです。誰かがSQLServerをサイレントに(ユーザーの操作なしで)インストールするための代替手段を手伝ってくれませんか。

ありがとうニシサ

4

1 に答える 1

0

まあ、Stackoverflow Exception は常に悪いことです
(Process.WaitForExit() 内で例外がキャッチされると思います)

しかし、いずれにせよ、process.WaitForExit() をまったく使用しないでください。
ただし、イベントをキャッチして、ユーザー フィードバックを提供してください。

編集:

無人のものについては...すぐにGoogleで検索できます!
SQL Server 2008 R2 – 無人サイレント インストール

質問の付加価値として、さまざまな状況(x32、x64など...)に合わせて、そのようないくつかのini構成を作成することをお勧めします

于 2012-06-28T08:10:45.217 に答える