【问题标题】:Install RabbitMQ using Wix, and set node name使用 Wix 安装 RabbitMQ,并设置节点名称
【发布时间】:2021-01-06 17:56:08
【问题描述】:

我正在尝试让安装程序在涉及 RabbitMQ 的地方工作。服务和依赖项都可以毫无问题地安装,但我无法让它识别我在系统环境变量中设置的节点名称。 核心问题是作为第三方部署过程的一部分正在更改 PC/主机名,这完全破坏了 Rabbit。

系统环境变量 (RABBITMQ_NODENAME) 由一个简单的控制台可执行文件在 Wix 引导程序启动时添加。

我怀疑这是因为安装程序没有得到关于更新变量的备忘录,所以当 RabbitMQ 安装程序稍后在 Wix 链中运行时,它只使用默认的 Rabbit 节点名称。

我最近的解决尝试在链的末尾有一个额外的控制台可执行文件,它在 Rabbit sbin/ 目录中运行以下命令,以尝试“刷新” Rabbit 安装:


FireRabbitBatchProcess("rabbitmq-service.bat", "remove");
FireRabbitBatchProcess("rabbitmq-service.bat", "install");
FireRabbitBatchProcess("rabbitmq-service.bat", "start");
...
private static void FireRabbitBatchProcess(string fileName, string arg)
{
    string rabbitScriptsPath = @"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin";
    string batchFilePath = Path.Combine(rabbitScriptsPath, fileName);

    if (File.Exists(batchFilePath))
    {
         TryLog("FireRabbitBatchProcess: Running " + batchFilePath + " with argument " + arg);
         Process proc = new Process { StartInfo = new ProcessStartInfo() { FileName = batchFilePath, Arguments = arg } };
         proc.Start();
         proc.WaitForExit(60 * 1000);
    }
    else
    {
         TryLog("FireRabbitBatchProcess: This batch file does not exist! " + batchFilePath);
    }
}

但这似乎也不起作用。但是,如果我在安装后自己运行这些命令,它将正常工作。

我是否缺少一种明显的方法可以安装 Rabbit 并让它使用特定的节点名称,这样 PC 名称的更改不会破坏它?

【问题讨论】:

    标签: .net windows rabbitmq wix


    【解决方案1】:

    听起来你需要有人来实现5981 - Burn support for WM_SETTINGSCHANGED to refresh environment variables

    对于您的解决方法附加控制台可执行文件,可以查询注册表以获取更新的环境变量并将其传递给您正在创建的子进程 (ProcessStartInfo.Environment)。

    理想情况下,捆绑包将决定该环境变量的值,并将其传递给需要该信息的每个包,因此您不必依赖环境变量。

    【讨论】:

      猜你喜欢
      • 2016-03-14
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      相关资源
      最近更新 更多