我有一个用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选项,您可以指定从供应商或服务器上的某个位置获取组件的位置。