作为安装我的应用程序(WPF应用程序)的一部分,需要安装SQL Server以及先决条件。因此,当用户选择安装SQL Server的选项时,在应用程序安装过程中,需要使用随安装程序提供的configuration.ini文件进行静默安装。
所以我所做的是通过具有执行SQL服务器命令的代码准备一个名为“InstallSQL.bat”的批处理文件。
现在,当用户选择安装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(没有用户交互)。
由于 Nishitha
答案 0 :(得分:0)
好吧,Stackoverflow异常总是一件坏事 (我猜想在Process.WaitForExit()
内部时会捕获异常但无论如何,我认为你根本不应该使用process.WaitForExit():
但抓住事件并给予用户反馈。
编辑:
对于无人看管的东西......你可以快速谷歌吧! SQL Server 2008 R2 – Unattended Silent Install
作为问题的附加值,我建议在不同情况下创建几个ini配置(x32,x64,等等......)