我完全遵循了Microsoft教程:创建Windows服务应用程序。特别是,我看到了这个代码:
static void Main(string[] args)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyNewService(args)
};
ServiceBase.Run(ServicesToRun);
}
有了相应的ProjectInstaller
(也在教程中描述(,我就可以用installutil
以教程中描述的方式成功安装服务。
现在,上面的代码建议我可以使用该程序安装一系列服务。例如,我已经建立了几个服务,并提出了以下类型的代码:
static void Main(string[] args)
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1(args),
new Service2(args),
new Service3(args),
new Service4(args)
};
ServiceBase.Run(ServicesToRun);
}
同样,对于相应的ProjectInstaller
,使用installutil
安装这4个服务是可以的。我安装了服务,甚至可以运行它们。
然而,我没能找到一种方法将其打包到安装程序包中。Microsoft文档提到ClickOnce、WiX和InstallShield软件包安装程序。在我的开发团队中,我们使用Advanced Installer。这些安装程序包似乎都没有在其文档中显示如何使用上述4服务Main
程序安装服务。每次,我都会看到如何一次安装一个服务。例如,我可以为我的每个服务编写一个上面的Main
程序,并将这些程序打包到我的安装程序包中。
有可能吗?怎样我真的不想为我的每个服务创建一个visualstudio项目,只是为了安装它们。如果我不能通过上述一系列服务实现这一目标,我有什么可能性?
您可以尝试使用包含所有要安装的服务的安装项目。但您需要安装Microsoft Visual Studio安装程序项目插件(框图标(这是一个可以帮助您的指南:https://www.c-sharpcorner.com/UploadFile/b7531b/create-simple-window-service-and-setup-project-with-installa/也许当你在安装项目上添加自定义操作时,你可以添加更多的服务来包括在安装文件中。