.net 使用Wix安装RabbitMQ,并设置节点名称
我试图让安装程序在RabbitMQ涉及的地方工作。服务和依赖项都可以毫无问题地安装,但我很难让它识别我在系统环境变量中设置的节点名称核心问题是,PC/主机名作为第三方部署过程的一部分正在更改,这完全破坏了Rabbit。 系统环境变量(.net 使用Wix安装RabbitMQ,并设置节点名称,.net,windows,rabbitmq,wix,.net,Windows,Rabbitmq,Wix,我试图让安装程序在RabbitMQ涉及的地方工作。服务和依赖项都可以毫无问题地安装,但我很难让它识别我在系统环境变量中设置的节点名称核心问题是,PC/主机名作为第三方部署过程的一部分正在更改,这完全破坏了Rabbit。 系统环境变量(RABBITMQ_NODENAME)由一个简单的控制台可执行文件添加到Wix引导程序的开头 我怀疑这是因为安装程序没有得到关于更新变量的备忘录,所以当RabbitMQ安装程序稍后在Wix链中运行时,它只使用默认的兔子节点名称 我最新的解析尝试在链的末尾有一个额外的控
RABBITMQ_NODENAME
)由一个简单的控制台可执行文件添加到Wix引导程序的开头
我怀疑这是因为安装程序没有得到关于更新变量的备忘录,所以当RabbitMQ安装程序稍后在Wix链中运行时,它只使用默认的兔子节点名称
我最新的解析尝试在链的末尾有一个额外的控制台可执行文件,它在Rabbitsbin/
目录中运行以下命令,以尝试“刷新”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将决定环境变量的值,并将其传递给需要该信息的每个包,这样您就不必依赖环境变量