使用Inno Setup安装具有不同配置的同一Windows服务的多个实例

时间:2018-03-02 13:08:32

标签: c# .net windows windows-services inno-setup

我是编程和编码的新手,我被要求多次安装服务,并让他们拥有不同的配置文件。 事情就是这样:

  • 我需要使用不同的名称安装相同的服务两次
  • 每项服务都必须阅读不同的配置文件

在配置文件中,我有两个服务需要不同的连接设置。该服务只是从另一个控制器检索信息,但是他们需要从两个不同的控制器接收信息,这就是他们要求使用不同配置文件的同一服务的两个不同实例的原因。

我对此感到困惑。我知道这两种服务都必须有不同的名称。但是如何使用Inno安装程序安装它们并让它们读取两个不同的配置文件?

该服务是使用#C,.NET Framework 4.5.2

完成的

我有1个实例的简单安装程序:

Components

这是一项非常简单的服务。我知道如何添加[Route("")] [Route("/something-else")] public IActionResult Index(){ } 复选框以使用户选择他们想要的实例数。但我不知道如何添加第二个实例以及如何使第二个实例读取第二个配置文件。 我的服务代码中是否需要更改某些内容?这有可能吗?

我很抱歉我的英语很差,如果我不能更好地解释自己。我对编码和服务几乎一无所知。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

服务名称是create命令之后的第一个参数。

因此,在[Run]部分创建两个条目,每个服务一个:

[Run]
Filename: {sys}\sc.exe; \
    Parameters: "create Service1 start= auto binPath= ""{app}\Service.exe""" ; \
    Flags: runhidden
Filename: {sys}\sc.exe; \
    Parameters: "create Service2 start= auto binPath= ""{app}\Service.exe""" ; \
    Flags: runhidden

同样适用于[UninstallRun]

关于加载配置文件。您没有告诉我们任何有关您的服务代码如何确定首先加载配置文件的位置。

假设路径以某种方式硬编码(或以某种方式以编程方式解析),您可以更改代码以将服务名称合并到路径中。

要确定当前正在运行C#代码的服务实例的名称,请参阅How can a Windows Service determine its ServiceName?