2015-04-03 109 views
1

我在安装应用程序上安装我的WPF产品的所有需求,其中一个需求是SQL Server 2012 Express,下面的代码是在为静默安装生成配置文件后安装它:以编程方式安装SQL Server 2012 Express

private void SetupSQLServer() 
{ 
     string result = ""; 
     string commandLine = ""; 

     if (os64) 
      commandLine = string.Format(@"{0}\SQLServer\sql64\setup.exe PCUSOURCE={0}\SQLServer\sql64 /SAPWD=""[email protected]"" /CONFIGURATIONFILE={0}\SQLServer\ConfigurationFile64.ini /HIDECONSOLE", setupFolder); 
     else 
      commandLine = string.Format(@"{0}\SQLServer\sql86\setup.exe PCUSOURCE={0}\SQLServer\sql86 /SAPWD=""[email protected]"" /CONFIGURATIONFILE={0}\SQLServer\ConfigurationFile32.ini /HIDECONSOLE", setupFolder); 

     startInfo.WorkingDirectory = setupFolder; 
     startInfo.Arguments = "/c " + commandLine; 
     startInfo.RedirectStandardOutput = true; 
     startInfo.UseShellExecute = false; 

     process.StartInfo = startInfo; 

     try 
     { 
      process.Start(); 
     } 
     catch (Exception e) 
     { 
      result = e.Message; 
     } 

     result = result + "\n" + process.StandardOutput.ReadToEnd(); 

     UpdateStepResult(result); 
    } 

有代码中没有错误,但它不工作..当我运行命令窗口出现和消失,并没有发生的代码。

UPDATE:

当我用:

fileName = string.Format(@"{0}\SQLServer\sql64\setup.exe", setupFolder); 

的安装运行,但没有配置文件,当我用:

fileName = string.Format(@"{0}\SQLServer\sql64\setup.exe /CONFIGURATIONFILE={0}\SQLServer\sql64\ConfigurationFile64.ini", setupFolder); 

它给了我这个错误“系统找不到指定的文件“!!! 该文件存在于相同的文件夹!

请你能帮我发现错误。

在此先感谢。

+0

安装应用程序是否在管理员权限下运行? – 2015-04-03 15:42:25

+0

我试图用管理权限运行它(右键单击并以管理员身份运行) – 2015-04-03 16:09:32

回答

2

ProcessStartInfo要求FileName属性有效。上面的代码没有设置它,但将所有内容都作为参数传递。

可能需要将命令行分为两部分。要运行的可执行文件和要传递的参数

if (os64) 
    { 
     fileName = string.Format("{0}\SQLServer\sql64\setup.exe", setupFolder); 
     commandLine = string.Format(@"PCUSOURCE={0}\SQLServer\sql64 /SAPWD=""[email protected]"" /CONFIGURATIONFILE={0}\SQLServer\ConfigurationFile64.ini /HIDECONSOLE", setupFolder); 
    } 
    else 
    { 
     // Same for 32 bit 
     ..... 
    } 
    .... 
    startInfo.FileName = fileName; 
    .... 
+0

Steve,它可以工作,但我不能运行配置文件? – 2015-04-03 18:48:36

+0

运行Sql Server的自动安装并非易事。我不能说为什么你的配置文件不起作用。也许最好用你的配置文件的细节和收到的错误发布一个新的问题。 – Steve 2015-04-03 19:05:08

+0

谢谢史蒂夫你的时间,你可以检查问题更新请。 – 2015-04-03 19:12:45