0

作为安装我的应用程序(WPF 应用程序)的一部分,需要安装 SQL Server 以及先决条件。因此,当用户选择安装 SQL Server 的选项时,在应用程序安装过程中,需要使用安装程序提供的 configuration.ini 文件静默安装。

所以我所做的是通过代码准备一个名为“InstallSQL.bat”的批处理文件,该文件具有执行 SQL 服务器的命令。

现在当用户选择安装 SQL server 时,从安装代码中,批处理文件将被执行。代码如下

        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 导致进程终止”。有人可以帮我提供静默安装 SQL Server 的替代方法(无需用户交互)。

谢谢尼西塔

4

1 回答 1

0

好吧,Stackoverflow 异常总是一件坏事
(我猜在 Process.WaitForExit()

但无论哪种方式,我认为您根本不应该使用 process.WaitForExit() :
而是抓住事件并提供用户反馈。

编辑:

对于无人值守的东西......你可以快速谷歌它!
SQL Server 2008 R2 – 无人值守静默安装

作为问题的附加值,我建议为不同的情况(x32、x64、等)创建几个类似的 ini 配置

于 2012-06-28T08:10:45.217 回答