我有一个用C#开发的Windows应用程序,我需要将它安装在只安装了操作系统和.Net Framework的PC上。现在,我必须使用此Windows应用程序在该PC上安装SQL Server 2008 R2 Express版本。我编写了安装/卸载Windows服务的代码,但是安装了sql server。有人可以帮助我做这件事。
答案 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";
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安装程序,则可以选择设置先决条件。
在底部附近有一个SQL Server Express选项,您可以指定从供应商或服务器上的某个位置获取组件的位置。