如何使用Visual Studio 2017社区

时间:2017-08-31 09:44:01

标签: visual-studio windows-services visual-studio-2017

使用VS2017社区我已经编写了一个可在本地计算机上运行的服务。我按照这里的指示: https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer

并使用Installutil.exe成功安装(按照上面链接中的说明)。一切都好。

我现在想要在我们组织的六台服务器上部署它。在Microsoft关于安装服务(https://docs.microsoft.com/en-us/dotnet/framework/windows-services/how-to-install-and-uninstall-services)的文档中,它说:

  

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

以及指向适用于VS2012的网页的链接(不能再发布任何链接作为我的声誉< 10)

我已经下载并安装了“Microsoft Visual Studio 2017安装程序项目”软件包,它允许我创建一个安装项目。当我运行它时,它正确安装项目输出(即将exe和amp文件复制到Program Files中的正确文件夹),但不创建服务。

有关于在此站点上部署服务的详细帖子(问题9021075),但是当我按照这些说明操作时,我在安装时收到1001错误。

我能找到的所有文档都是指早期版本的VS或之前的Installer软件包,所以我甚至不确定我是否可以使用我正在使用的软件。

因此,VS2017社区使用Microsoft Visual Studio 2017安装程序项目,如何创建独立安装程序以部署使用InstallUtil在本地安装时正常工作的服务?

或者我可以在目标计算机上使用InstallUtil吗?我想我需要为它安装Visual Studio,我不想这样做。有更快的方法吗?

我只有6台服务器可以安装它,所以即使是一些手动解决办法也可以。

2 个答案:

答案 0 :(得分:4)

由于安装程序引发的1001错误是一般性错误,因此需要有关调整此问题的有关serviceProcessInstaller1serviceInstaller1文件的设置的详细信息。

另一种方法是使用Topshelf,它是托管使用.NET框架编写的服务的框架。它简化了服务的创建,允许开发人员创建一个简单的控制台应用程序,可以使用Topshelf作为服务安装。原因很简单:调试控制台应用程序比使用服务要容易得多。一旦应用程序经过测试并准备投入生产,Topshelf便可将应用程序作为服务进行安装。

或者,您可以使用InstallUtil.exe。它是.NET Framework的一部分,因此无需安装Visual Studio。

答案 1 :(得分:4)

感谢您的回复。我现在有一个解决方案。我在目标服务器上找到了InstallUtil(在我的例子中,它位于C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319中,但搜索会找到它)。我复制并将其作为内容添加到我的项目中,所以当我现在部署它时,我将InstallUtil放在与我的EXE相同的文件夹中。

要安装,我以管理员身份运行CMD,cd到项目文件夹并发出命令:

  

installutil.exe myService.exe

这是一次性任务。一旦服务正常工作,要更新它,我只需要停止它,上传新的myService.exe(和任何DLL)来覆盖旧的,然后重新启动它。