在没有停机的情况下安装升级到Windows服务

时间:2016-02-13 10:03:46

标签: c# .net windows-services

我需要为我的Windows服务制作升级代码。要求是升级期间无法停止服务。所以我想要实现的是实际上在短时间内运行两个版本的服务,然后卸载旧版本。

当然我知道我不能安装多个同名服务。因此,在第二次安装中,我将名称更改为MyService_1.1.0.0。这是非常好的名称,并且服务安装没有问题,但......仅在未安装MyService的情况下。当我尝试安装两者时,我在Service Installer中遇到错误,第二个没有安装。

最邪恶的部分是没有异常抛出。附加到服务进程的调试器没有帮助。日志中没有任何内容。安装程序只是默默地拒绝安装第二个服务,我不知道从哪里开始。

除了相同的源代码外,这两种服务有什么共同之处?它们具有不同的名称,不同的程序集版本,不同的路径,但相同的描述,相同的事件日志名称。

我会尝试在第二个服务中更改事件日志名称,也许这会有所帮助,但是它是一种查找为什么服务安装失败的方法吗?这让我困扰多年 - 从来没有找到过实际的例外。它总是一个假的例外,“错误 - 没有安装服务,因为它没有安装”。

第二个问题是:有没有更好的方法来确保升级期间服务的开启?好吧,似乎要求是不可能满足的,但另一方面 - 如果我做了一个普通的exe,而不是一个服务,它会在升级过程中暂时接管旧的服务操作,它可能会起作用。然后我将卸载旧版本,安装新版本并退出帮助程序进程。看起来有点复杂(顺便说一句,服务操作涉及使用低级系统驱动程序),但也许它比尝试同时运行两个版本更清晰。

0 个答案:

没有答案