【发布时间】: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 名称的更改不会破坏它?
【问题讨论】: