我可以有多个托管的服务在一个单一窗口可执行
-
18-09-2019 - |
题
我的问题基本上是相同的作为以下之一,但答案并没有帮助我。
基本上,我有3个服务,可以说,"服务1"、"服务"和"民服务3".
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1("Service1"),
new Service2("Service2"),
new Service3("Service3")
};
ServiceBase.Run(ServicesToRun);
我也已经安装的类有相应的 serviceInstaller.服务名称="ServiceX"对于每个这些服务。
当我用installutil,我看到所有3个服务对服务的管理。然而,当我开始他们的(任何或所有)只有第一个("服务1")正在运行。
我知道这是微不足道的我或许可以有不同的安装项目的每一个这些但是在我的情况下,语义上更有意义,只使用一个
你的帮助是理解
感谢 地点
解决方案
我创建了3个服务项目(低于)其使用的项目的安装程序为每个服务。然后我加入一个安装项目的安装服务进入服务经理。这里是我的工作流程:
- 创建3个服务中的一个解决方案在Visual Studio2008年。命名的每个服务作为服务1,御服务2和民服务3.(正在确定改变实际的服务名称,以他们各自的名称在属性窗口。)
- 加入一个安装项目,以此解决方案。
- 添加本项目的产出的三个服务项目的安装项目。
- 加自定义的行动对于所有三个服务中安装用于安装的服务,在服务经理。
- 建造和安装。
这给了我三个不同的服务在服务管理:服务1,御服务2和民服务3
享受!
http://code.google.com/p/multi-service-install/
编辑:
我已经更新了代码存储库中有一个可执行,但两个服务。每个服务安装的服务经理与其自己的名字和能力来启动或停止。我想这就是你想要的,对吧?这里是我做了什么:
- 创造了一个服务项目。
- 添加的第二个服务于同一项目(一个独特的服务名称)。
- 加入一个安装两个服务(ServiceA和事务b).
- 在ProjectInstaller.设计师。vb文件,我改变了我。安装。AddRange线,以显示两种服务的安装。(我。ServiceInstaller1,我。ServiceInstaller2)
- 在主要入境点的主要服务(ServiceA在我的情况),我设置ServicesToRun变为一系列ServiceBase含有的所有服务,我希望它运行(ServiceA和事务b).这是一个重要步骤,为服务经理设置一个属性,基于数量的论点在这里-要么允许多实例的相同的可执行软件或只有一个实例。
- 添加一个安装项目和使用的输出服务。
- 添加一个自定义的行动使用的输出服务。
代码仍然可以下载,从同样的链接,如上。
谢谢!
不隶属于 StackOverflow