我有一个Windows3.5Windows服务,它有几种不同的配置/风格,例如:.NET 3.5Windows Service。发布,测试,调试等。我已经为服务创建了一个安装程序包,它是作为msbuild脚本的一部分构建的,但我需要能够以一种允许服务的每种风格都安装在同一台机器上的方式来构建安装程序。有人知道做这件事的最好方法吗?
谢谢
发布于 2010-12-01 19:38:42
也许this article能帮上忙?
The Problem (问题解决方案)
在使用Reflector查看ServiceInstaller类时,您将看到它在ServiceInstaller.Install方法中对CreateService进行了Win32调用。每当使用与已经安装的服务的serviceName或displayName参数匹配的方法调用该方法时,CreateService都将返回ERROR_DUPLICATE_SERVICE_NAME返回代码。这就是导致在上面的窗口中抛出Win32Exception并最终导致第二次安装失败的原因。您可以在CreateService function here上查看完整的文档。
要解决此问题,所需做的就是在安装和服务启动过程中将服务名称动态设置为已知值,并确保所安装服务的每个实例的值都不同。
解决方案
所有需要做的就是确保每个服务安装实例的名称是唯一的。然后,您需要为您希望拥有的每个服务实例提供安装目录的副本。最后,您需要能够在安装和启动期间动态设置服务名称。这将通过使用app.config文件来实现。
本文继续提供有关如何在同一台计算机上安装.NET Windows服务的多个实例的分步说明。
当然,我不禁想知道为什么你需要在同一台机器上同时运行Debug和Release版本。
发布于 2011-01-22 02:56:36
只是想引起人们对Cody gray一文中的评论的注意。似乎作者和一位评论者一致认为,使用sc.exe有一种更简单的方法,如下所示
sc \\myserver create NewService binpath= c:\nt\system32\NewServ.exehttps://stackoverflow.com/questions/4323733
复制相似问题