在c#中使用rush Site-Install

本文关键字:rush Site-Install | 更新日期: 2023-09-27 17:53:34

我正在尝试在c#中使用rush安装Drupal站点,作为使用MSI安装完整Windows Server站点的一部分。我使用的rush命令如下所示。

C:'ProgramData'Drush'Drush.bat -y si application_name --db-url=sqlsrv://admin_name:password(local)'SQLEXPRESS:/database_name --account-name=admin --account-mail=name@test.com --account-pass=Password1234 --site-mail="admin@company.com" --site-name="Site Name" install_configure_form.site_default_country=GB install_configure_form.date_default_timezone="Europe/London"

当在工作目录(inetpub'application_name)中从cmd.exe运行时,这可以完美地工作。

当上面的代码被放入代码并在安装过程中执行时,问题就出现了,并且总是导致以下错误(每次使用不同的文件名)。

无法解压C:'ProgramData' rush'lib'druFD63.tmp.gz

用于执行命令的c#代码如下所示:

public static ActionResult Drush_Configuration(Session session)
    {       
        string strArgs = "-y si application_name --db-url=sqlsrv://admin_name:password(local)'SQLEXPRESS:/database_name --account-name=admin --account-mail=name@test.com --account-pass=Password1234 --site-mail="admin@company.com" --site-name="Site Name" install_configure_form.site_default_country=GB install_configure_form.date_default_timezone="Europe/London";
        string strExeCmd = @"C:'ProgramData'Drush'Drush.bat ";
        strExeCmd = strExeCmd + strArgs;
        string strLocation = @"C:'inetpub'application_name";
        session.Log("Starting Drush Configuration");
        session.Log("Command line is: " + strExeCmd + " " + strArgs);
        int exitCode;
        ProcessStartInfo processInfo;
        Process process;
        try
        {
            processInfo = new ProcessStartInfo("cmd.exe", "/c " + strExeCmd);
            processInfo.WorkingDirectory = strLocation;
            processInfo.WindowStyle = ProcessWindowStyle.Normal;
            processInfo.CreateNoWindow = true;
            processInfo.UseShellExecute = false;
            // *** Redirect the output ***
            processInfo.RedirectStandardError = true;
            processInfo.RedirectStandardOutput = true;
            process = Process.Start(processInfo);
            process.WaitForExit();
            // *** Read the streams ***
            string output = process.StandardOutput.ReadToEnd();
            string error = process.StandardError.ReadToEnd();
            exitCode = process.ExitCode;
            session.Log("output>>" + (String.IsNullOrEmpty(output) ? "(none)" : output));
            session.Log("error>>" + (String.IsNullOrEmpty(error) ? "(none)" : error));
            session.Log("ExitCode: " + exitCode.ToString(), "ExecuteCommand");
            process.Close();
        }
        catch (Exception e)
        {
            session.Log("Error: " + e);
            return ActionResult.Failure;
        }
        session.Log("Drush Configuration completed successfully");
        return ActionResult.Success;
    }

如上所述,这总是导致"无法解压缩"错误。

有没有人用过c#在rush中运行Site-Install ?有人知道为什么这样执行会失败吗?

如有任何想法或建议,我将不胜感激。

我使用的是Drupal -5.8-2012-12-10- installer -v1.0.20, Drupal 7和Windows Server 2008 R2 x64。

在c#中使用rush Site-Install

环境变量导致此问题。rush MSI安装程序设置了在MSI机器上下文中无法识别的用户路径环境变量。
因此,通过在站点安装MSI中添加rush, GnuWin32和PHP的系统路径变量,可以通过编程方式安装站点。