如何使用Visual Studio 2017社区部署Windows服务



与VS2017社区合作,我写了一项在本地机器上使用的服务。我在这里遵循该指示:https://lealen.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-service-application-in-the-component-designer

并使用installutil.exe成功安装了它(根据上述链接中的说明)。一切都很好。

我现在想将其部署在我们组织中的六个服务器中。在Microsoft的文档中有关安装服务的文档(https://learn.microsoft.com/en-us/dotnet/framework/windows-services/how-to-ind-to-install-and-and-ninstall-services ),

如果您是想要发布Windows服务的开发人员,用户可以安装和卸载,则应使用InstallShield

并链接到适用于VS2012的页面(无法将其他链接发布为我的声誉< 10)

我已经下载并安装了" Microsoft Visual Studio 2017 Installer Projects"软件包,该软件包使我能够创建一个设置项目。当我运行它时,它将正确安装项目输出(即将EXE& dll文件复制到程序文件中的正确文件夹),但没有创建服务。

有一篇有关在此站点上部署服务的详细帖子(问题9021075),但是当我遵循这些说明时,我会在安装时遇到1001个错误。

我可以找到的所有文档是指vs或以前的安装程序软件包的早期版本,因此我什至不确定是否可以使用正在使用的软件进行操作。

因此,使用Microsoft Visual Studio 2017 Installer Projects的VS2017社区,如何创建一个独立的安装程序来部署使用installutil当地安装时正常工作的服务?

还是我可以在目标机器上使用installutil?我认为我需要在其中安装Visual Studio,因此我不想这样做。有更快的方法吗?

我只有6台服务器可以安装此服务器,因此即使是手动工作也可以使用。

感谢您的回复。我现在有解决方案。我在目标服务器上找到了installutil(就我而言,它在C: Windows Microsoft.net Framework64 v4.0.30319中,但搜索会找到它)。我复制并将其添加到我的项目中,因此当我现在部署它时,我将其安装在与EXE同一文件夹中。

要安装,我将CMD作为管理

installutil.exe myService.exe

这是一项一次性任务。服务工作后,要更新它,我只需要停止它,请上传新的myService.exe(&任何dlls)以覆盖旧的myservice.exe(& not dlls)并再次重新启动。

有关您用于serviceProcessInstaller1serviceInstaller1文件的更多信息来调试此问题,因为安装程序提出的1001错误是通用错误。

这样做的另一种方法是使用Topshelf,这是用于托管使用.NET框架编写服务的框架。它简化了服务的创建,允许开发人员创建一个可以使用Topshelf的服务安装的简单控制台应用程序。造成这种情况的原因很简单:比服务应用程序应用程序要比服务更容易。一旦测试了应用程序并准备好生产,Topshelf便可以轻松地将应用程序作为服务安装。

另外,您可以使用InstallUtil.exe。它是.NET框架的一部分,因此无需安装Visual Studio。

最新更新