2017-08-31 85 views
0

使用VS2017社区我已经编写了可在我的本地计算机上运行的服务。我遵循这里的指令: https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer如何使用Visual Studio 2017社区部署Windows服务

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

我现在想在我们组织的六台服务器上部署该服务器。在微软的有关安装服务的文档(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文件复制到Program Files中的正确文件夹),但不会创建该服务。

有关于本网站的服务部署(问题9021075)中的详细说明,但是,当我按照提示进行操作,我得到上安装1001错误。

所有我能找到的文件指的是早期版本的VS或以前的安装程序包的,所以我也不肯定,如果我可以用我使用的软件做到这一点。

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

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

我只有6台服务器上安装此,因此即使部分手工作业,各地可能会做。

+0

InstallUtil.exe是.NET Framework的一部分,因此不需要安装Visual Studio。 –

+0

谢谢。帮助我找到解决方案 –

回答

1

有关您用于serviceProcessInstaller1serviceInstaller1文件的设置的更多信息将需要调试此问题,因为安装程序引发的1001错误是一般性错误。

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

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

+0

谢谢。我现在使用InstallUtil对它进行了排序,但我会检查出Topshelf作为更持久的解决方案 –

1

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

要安装,我运行CMD作为管理员,cd到项目文件夹,发出命令:

installutil.exe myService.exe

这是一次性的任务。一旦服务正在运行,为了更新它,我只需要停止它,上传新的myService.exe(&任何DLL)来覆盖旧的并重新启动它。

相关问题