我有一个.NET 3.5 Windows服务,有几种不同的配置/风格,即。发布,测试,调试等我已经为该服务创建了一个安装程序包,它是作为msbuild脚本的一部分构建的,但是我需要能够以允许每种服务风格的方式构建安装程序包。安装在同一台机器上。有谁知道最好的方法吗?
由于
答案 0 :(得分:2)
也许this article会有所帮助吗?
问题
审核
ServiceInstaller
时 使用Reflector的类,你会看到它 在Win32中调用CreateService
ServiceInstaller.Install
方法。CreateService
将返回ERROR_DUPLICATE_SERVICE_NAME
返回 调用方法时的代码 使用serviceName
或displayName
与a匹配的参数 已安装的服务。这是 导致Win32Exception
的原因是什么 扔在上面的窗口和 最终导致第二次安装 失败。您可以查看完整的 关于CreateService的文档 函数here。要解决这个问题,需要做的就是 要做的是动态设置 安装期间的服务名称和 服务启动到已知值和 确保价值不同 对于您的每个服务实例 安装。
解决方案
所有需要做的就是做 确定每个服务的名称 安装实例是唯一的。然后 你需要有副本 每个的安装目录 你想要的服务实例。 最后,您需要能够设置 服务名称在动态期间 安装和启动。这将会 便于使用 app.config 文件。
本文继续提供有关如何在同一台计算机上安装多个.NET Windows服务实例的分步说明。
当然,我不禁想知道为什么你需要在同一台机器上同时运行Debug和Release版本。
答案 1 :(得分:2)
只是想提请注意Cody灰色参考文章中的评论。似乎作者和评论者同意使用sc.exe有一个更简单的方法如下
sc \\myserver create NewService binpath= c:\nt\system32\NewServ.exe