C# 以编程方式安装SQL Server 2012 Express

C# 以编程方式安装SQL Server 2012 Express,c#,wpf,command-line,sql-server-2012-express,C#,Wpf,Command Line,Sql Server 2012 Express,我使用安装应用程序来安装我的WPF产品的所有要求,其中一个要求是SQL Server 2012 Express,下面的代码是在我生成静默安装的配置文件后安装它: private void SetupSQLServer() { string result = ""; string commandLine = ""; if (os64) commandLine = string.Format(@"{0}\SQLServer\s

我使用安装应用程序来安装我的WPF产品的所有要求,其中一个要求是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=""p@ssw0rd"" /CONFIGURATIONFILE={0}\SQLServer\ConfigurationFile64.ini /HIDECONSOLE", setupFolder);
        else
            commandLine = string.Format(@"{0}\SQLServer\sql86\setup.exe PCUSOURCE={0}\SQLServer\sql86 /SAPWD=""p@ssw0rd"" /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);
    }
代码中没有错误,但不起作用。。当我运行代码时,命令窗口出现和消失,什么也没有发生

更新:

当我使用:

fileName = string.Format(@"{0}\SQLServer\sql64\setup.exe", setupFolder);
fileName = string.Format(@"{0}\SQLServer\sql64\setup.exe /CONFIGURATIONFILE={0}\SQLServer\sql64\ConfigurationFile64.ini", setupFolder);
安装正在运行,但没有配置文件,当我使用:

fileName = string.Format(@"{0}\SQLServer\sql64\setup.exe", setupFolder);
fileName = string.Format(@"{0}\SQLServer\sql64\setup.exe /CONFIGURATIONFILE={0}\SQLServer\sql64\ConfigurationFile64.ini", setupFolder);
它给我这个错误“系统找不到指定的文件”!!! 该文件存在于同一文件夹中

请你帮我找出错误


提前感谢。

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

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

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

安装程序是否在管理员权限下运行?我尝试使用管理员权限运行它(右键单击并以管理员身份运行)。运行Sql Server的自动安装不是一件容易的任务。我无法解释为什么您的配置文件不能工作。也许最好发布一个新问题,其中包含配置文件的详细信息和收到的错误。感谢Steve抽出时间,请检查问题更新。