如何创建多个窗口服务实例?

我想运行服务器上安装的窗口服务的多个实例,而无需再次安装窗口服务。

这怎么可能?

服务“安装”实际上只是在名称,可执行文件和一些其他元数据位之间添加映射。 安装后,服务要么运行(一次),要么不运行。 要让多个实例作为服务运行,它们必须使用不同的名称注册,这基本上意味着多次安装它。 但是,这并不意味着您需要多个不同的可执行副本。

我这样做的方法是将Installer子类化,使其创建一个ServiceInstallerServiceProcessInstaller ,并将ServiceName (在运行时,通过自定义安装程序)提供给ServiceInstaller实例,然后在运行时使用ManagedInstallerClass – 基本上使得一个独立的exe能够安装并将自身卸载为服务(根据需要多次),使用命令行参数指定名称。