.net 使用Wix安装RabbitMQ,并设置节点名称

.net 使用Wix安装RabbitMQ,并设置节点名称,.net,windows,rabbitmq,wix,.net,Windows,Rabbitmq,Wix,我试图让安装程序在RabbitMQ涉及的地方工作。服务和依赖项都可以毫无问题地安装,但我很难让它识别我在系统环境变量中设置的节点名称核心问题是,PC/主机名作为第三方部署过程的一部分正在更改,这完全破坏了Rabbit。 系统环境变量(RABBITMQ_NODENAME)由一个简单的控制台可执行文件添加到Wix引导程序的开头 我怀疑这是因为安装程序没有得到关于更新变量的备忘录,所以当RabbitMQ安装程序稍后在Wix链中运行时,它只使用默认的兔子节点名称 我最新的解析尝试在链的末尾有一个额外的控

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

系统环境变量(
RABBITMQ_NODENAME
)由一个简单的控制台可执行文件添加到Wix引导程序的开头

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

我最新的解析尝试在链的末尾有一个额外的控制台可执行文件,它在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名称不会破坏它?听起来您需要有人来实现

对于其他控制台可执行文件,可以在注册表中查询更新的环境变量,并将其传递到正在创建的子进程()

理想情况下,bundle将决定环境变量的值,并将其传递给需要该信息的每个包,这样您就不必依赖环境变量