【问题标题】:Installing multiple instances of the same Windows service with different configuration using Inno Setup使用 Inno Setup 安装具有不同配置的同一 Windows 服务的多个实例
【发布时间】:2018-03-02 13:08:31
【问题描述】:

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

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

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

我被这个困住了。我知道这两个服务必须有不同的名称。但是如何使用 Inno setup 安装它们并让它们读取两个不同的配置文件?

该服务是使用 #C、.NET Framework 4.5.2 制作的

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

[Files]
Source: "C:\...\Service.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\...\log4net.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:...\Service.exe.config"; DestDir: "{app}"; Flags: ignoreversion

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

[UninstallRun]
Filename: {sys}\sc.exe; Parameters: "stop Service"; Flags: runhidden
Filename: {sys}\sc.exe; Parameters: "delete Service"; Flags: runhidden

这是一项非常简单的服务。我知道如何使用复选框添加Components 以使用户选择他们想要的实例数。但我不知道如何添加第二个实例以及如何让第二个实例读取第二个配置文件。 我的服务代码有什么需要更改的吗?这有可能吗?

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

【问题讨论】:

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


    【解决方案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?

    【讨论】:

      猜你喜欢
      • 2012-02-02
      • 2011-11-29
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 2014-03-21
      • 2016-11-23
      相关资源
      最近更新 更多