使用C#Forms Application静默安装SQL Server

时间:2013-12-11 13:24:31

标签: c# sql sql-server sql-server-2008

我有一个用C#开发的Windows应用程序,我需要将它安装在只安装了操作系统和.Net Framework的PC上。现在,我必须使用此Windows应用程序在该PC上安装SQL Server 2008 R2 Express版本。我编写了安装/​​卸载Windows服务的代码,但是安装了sql server。有人可以帮助我做这件事。

3 个答案:

答案 0 :(得分:3)

遵循How to Embed SQL Server Express in an Application中的指南。它涵盖了您需要的所有,包括选择正确的分发,选择适当的安装方法(wpi与setup.exe)以及如何配置安装。 wiki甚至还有一个关于如何检测以前的Express安装的C#代码,如何从C#调用SQL Express的WPI(Web平台安装程序):

System.Diagnostics.Process.Start(
  @"C:\Program Files\Microsoft\Web Platform Installer\webplatforminstaller.exe",
  " /id SQLExpress");

或使用“wpi://”网址处理程序:

System.Diagnostics.Process.Start("wpi://SQLExpress/");

或使用Web App Galery:

System.Diagnostics.Process.Start(
  "http://www.microsoft.com/web/gallery/install.aspx?appsxml=&appid=SQLExpress");

最后,使用SQL Express设置(建议用于高级配置):

System.Diagnostics.Process processObj = 
  System.Diagnostics.Process.Start(@"c:\temp\sqlsetup\setup.exe",

@"/q /Action=Install /Hideconsole /IAcceptSQLServerLicenseTerms=True 
 /Features=SQL,Tools /InstanceName=SQLExpress
 /SQLSYSADMINACCOUNTS=""Builtin\Administrators"" 
 /SQLSVCACCOUNT=""DomainName\UserName"" /SQLSVCPASSWORD=""StrongPassword""");

它有完整的设置参数列表。

答案 1 :(得分:1)

您可以使用msiexec.exe。您只需通过传递MSI路径即可安装MSI。使用命令可以设置是在安装期间显示UI还是使其成为静默安装,

string installCommandString = "/i {0} /qn";

  • / qn :设置用户界面级别:无
  • / qb :设置用户界面级别:基本用户界面
  • / qr :设置用户界面级别:缩减UI
  • / qf :设置用户界面级别:完整用户界面(默认)

C# code

string installCommandString = "/i {0} /qn";

Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
process.StartInfo = startInfo;

startInfo.UseShellExecute = false;
startInfo.RedirectStandardError = true;

startInfo.FileName = "msiexec.exe";
startInfo.Arguments = string.Format(installCommandString, "SQL Server MSI Path");

process.Start();

答案 2 :(得分:0)

如果您使用的是Visual Studio中内置的标准MSI安装程序,则可以选择设置先决条件。

  • 右键单击MSI
  • 选择属性
  • 选择先决条件

在底部附近有一个SQL Server Express选项,您可以指定从供应商或服务器上的某个位置获取组件的位置。