如何使用安装程序包安装在.Net中编写的windows服务



我完全遵循了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/也许当你在安装项目上添加自定义操作时,你可以添加更多的服务来包括在安装文件中。

最新更新