使用C#窗体应用程序静默安装SQL Server



我有一个用C#开发的windows应用程序,我需要将它安装在一台只安装了操作系统和.Net Framework的PC上。现在,我必须提供一个选项,使用此windows应用程序在该电脑上安装SQL Server 2008 R2 Express版本。我已经编写了安装/卸载windows服务的代码,但遇到了sql server安装问题。有人能帮我做这件事吗。

请遵循"如何在应用程序中嵌入SQL Server Express"中的指导原则。它涵盖了您需要的一切,包括选择正确的发行版、选择适当的安装方法(wpi与setup.exe)以及如何配置安装。wiki甚至有一个C#代码,说明如何检测以前的Express安装,如何从C#调用SQL Express的WPI(Web平台安装程序):

System.Diagnostics.Process.Start(
  @"C:Program FilesMicrosoftWeb Platform Installerwebplatforminstaller.exe",
  " /id SQLExpress");

或者使用"wpi://"URL处理程序:

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

或使用网络应用商店:

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:tempsqlsetupsetup.exe",
@"/q /Action=Install /Hideconsole /IAcceptSQLServerLicenseTerms=True 
 /Features=SQL,Tools /InstanceName=SQLExpress
 /SQLSYSADMINACCOUNTS=""BuiltinAdministrators"" 
 /SQLSVCACCOUNT=""DomainNameUserName"" /SQLSVCPASSWORD=""StrongPassword""");

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

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

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

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

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();

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

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

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

最新更新