在 C# 中使用 Drush 站点安装

2023-12-04

我正在尝试使用 C# 中的 Drush 进行 Drupal 站点安装,作为使用 MSI 的完整 Windows Server 站点安装的一部分。 我正在使用的 Drush 命令如下。

C:\ProgramData\Drush\Drush.bat -y si application_name --db-url=sqlsrv://admin_name:password(local)\SQLEXPRESS:/database_name --account-name=admin [email protected] --account-pass=Password1234 --site-mail="[email protected]" --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\Drush\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 [email protected] --account-pass=Password1234 --site-mail="[email protected]" --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# 在 Drush 中运行 Site-Install 吗?有谁知道为什么以这种方式执行时可能会失败?

任何想法或建议将不胜感激。

我正在使用 Drush-5.8-2012-12-10-Installer-v1.0.20、Drupal 7 和 Windows Server 2008 R2 x64。


造成这个问题的原因是环境变量。 Drush MSI 安装程序设置的用户路径环境变量在 MSI 计算机上下文中无法识别。
因此,通过将 Drush、GnuWin32 和 PHP 的系统路径变量添加到站点安装 MSI,可以以编程方式安装站点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中使用 Drush 站点安装 的相关文章

  • 在C语言中使用“void”

    我很困惑为什么我们需要通过void转换为 C 函数 int f void return 0 versus int f return 0 什么是正确的做法以及为什么 In C int f 是一种老式的声明 它说f需要固定但未指定数量和类型的参
  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 当前的 c++ 工作草案与当前标准有何不同

    通过搜索该标准的 PDF 版本 我最终找到了这个链接C 标准措辞草案 http www open std org jtc1 sc22 wg21 docs papers 2012 n3376 pdf从 2011 年开始 我意识到我可以购买最终
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • 我在在线程序挑战编译器中遇到演示错误

    include
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在

随机推荐

  • JSF 使用 maxInactiveInterval 的问题

    各位 我发现在 web xml 中测试值为 1 分钟到期时 以下代码会在页面呈现时立即重定向到给定的 url 任何指示将不胜感激 The pageContext 仅当您在 JSP 上使用 JSF 时才可用 当您尝试重定向到 XHTML 文件
  • PdfStamper正在处理输出流吗? (iTextSharp)

    我正在使用 iTextSharp 通过 C 将页码添加到 PDF 在运行代码分析时MemoryStream因为怀疑输出被多次处理 请参阅 Visual Studio 生成的此警告 这是 API 问题吗 如果第二个参数为PdfStamper被
  • 使用 AES256 编译 System.Data.Sqlite

    我正在深入研究 sqlite system data sqlite 和 xerial 的 JDBC 的编译 试图让加密的 sqlite 文件在这三个文件中工作 据我了解 系统数据 sqlite使用RC4加密 SQLCipher Rijnda
  • Rmarkdown - 重复的目录(目录)

    你好 StackOverflow 社区 创建 Rmarkdown 文档时一切顺利 目录按预期显示 目录正确 当我在浏览器中从 Rstudio 打开 HTML 到我的浏览器时 它也能正确显示 当我保存 HTML 并稍后打开它或将其发送给某人时
  • Java记录方法调用?

    是否有任何工具可用于记录正在运行的 java 应用程序的所有方法调用 eg String str String anotherString str trim 应该记录如下内容 method call trim from class java
  • PostgreSQL,通过查询删除表

    我有这样的查询来列出当前数据库中的表 SELECT c relname FROM pg catalog pg class c LEFT JOIN pg catalog pg namespace n ON n oid c relnamespa
  • 有关如何使用正则表达式验证姓名的建议

    我想验证name and surname对于我的 Ruby on Rails 3 应用程序 所以我发布了这个问题 有人建议我阅读程序员对名字的误解文章 现在我遇到了麻烦 验证姓名的正确方法是什么 正则表达式是一种方法 但是我应该注意什么 你
  • offsetHeight 和 clientHeight 之间的区别

    在 javascript dom 中 元素的 offsetHeight 和 clientHeight 有什么区别 客户高度 返回对象可见区域的高度 以像素为单位 该值包含带有内边距的高度 但不包括滚动条 边框和边距 偏移高度 返回对象可见区
  • 当表为空时 DataBodyRange 会导致错误

    晚上好 我有以下按钮来保存表单的寄存器信息 但是在启动第一个记录时 它会抛出错误 错误已发生 91 对象或块变量未建立 并指示突出显示的内容 当已经插入值时它可以正常工作后 问题仅针对第一条记录 请问您能帮我解决这个错误吗 非常感谢 Pri
  • 如何从远程服务器收集 HTML 源响应?

    在我的一个服务器页面的 HTML 代码中 我需要对数据库中的特定项目进行搜索 该数据库位于我自己不拥有的另一台远程服务器中 执行我的请求的搜索类型示例 http www remoteserver com items search php s
  • 找到距离给定点最近的点的最快方法是什么?

    在数据数组中找到距离给定点最近的点的最快方法是什么 例如 假设我有一个数组A3D 点 与往常一样 坐标为 x y 和 z 和点 x p y p z p 我如何找到最近的点A到 x p y p z p 据我所知 最慢的方法是使用线性搜索 还有
  • Flutter Dart 将带有动态键但结构化值的 json 反序列化为 Map

    是否可以将具有动态键但结构化值的 json 反序列化为 flutter dart 中的 Map 我有一个像这样的 json data apple qty 5 price 100 orange qty 2 price 40 我希望将其反序列化
  • 使用适用于 Python 的 cx_Freeze 安装程序添加开始菜单快捷方式

    使用 cx freeze 制作并测试了我的 msi 安装程序后 从最终用户的角度来看 除了一个重要部分之外 一切都正常 安装程序期间无法通过勾选复选框来创建开始菜单或桌面快捷方式 并且这些操作都不是似乎是默认发生的 然而 通过搜寻邮件档案等
  • PHPmailer - 多次发送电子邮件

    我正在使用 PHPmailer 发送电子邮件 到目前为止 我已成功向一个地址发送电子邮件 现在 我想一键发送多封电子邮件 PROBLEM 我尝试使用下面的一些循环发送多封电子邮件 但输出错误 是的 它会发送电子邮件 但仅发送到一个地址 并且
  • 隐藏图表中的元素

    我有一个只读图表来可视化一些数据 我的最终用户希望 过滤 数据 以便一次只能显示数据的子集 我意识到每次应用过滤器时都可以重新绘制整个图表 省略不显示的元素 但我想知道是否有一种方法可以简单地动态 隐藏 一些现有元素 然后重新显示他们 为了
  • jQuery 在 img src 属性中添加 URL

    我只需要一个 jQuery 片段来在 img src 中进行前置 即 img src img picture1 jpg jQuery 代码片段是在这个 url 前面添加 http cdn something com 所以在 jQuery 片
  • 使用 Group By 子查询返回超过 1 个值

    我在使用此表和代码创建查询时遇到一些问题 我知道 GROUP BY Branch BranchName 会导致获取多个记录 但是 如何避免这种情况并在单个查询中做到这一点 我想要得到的是一张桌子 包含分行名称 总付费值 总未付费值 SELE
  • Opscenter 6.0 启动问题

    昨天 我尝试安装 opscenter 并启动现有 DSE 5 0 集群的导入 它失败并出现某些错误 指出安装的版本不是 opscenter 6 0 根本原因 opscenter 安装是从 datastax 社区仓库完成的 而不是企业仓库 我
  • “在非结构或联合中请求成员‘********’”是什么意思?

    对于这个错误的含义有简单的解释吗 request for member in something not a structure or union 我在学习C语言的过程中曾多次遇到过这个词 但我不知道它的含义 如果您在拥有指针时尝试访问实例
  • 在 C# 中使用 Drush 站点安装

    我正在尝试使用 C 中的 Drush 进行 Drupal 站点安装 作为使用 MSI 的完整 Windows Server 站点安装的一部分 我正在使用的 Drush 命令如下 C ProgramData Drush Drush bat y