我有一个Windows服务(C#,能够install itself)。我还有一个安装程序包,可以更新Windows服务。此更新程序当前是手动运行的。 (NSIS)安装程序/更新程序运行net stop myService
以停止服务,然后执行安装/更新,然后执行net start myService
。
我的目标是以某种方式让服务更新。这个excellent question及其评分最高的答案列出了可能解决问题的所有可能方法。
在我看来,最简单,最好的选择是让服务Proces.Start()
成为安装程序。唯一的小问题是安装程序需要知道如何在升级期间停止服务 - 我的安装程序已经有了。
我听说有传言说这是有问题的,但在我的testing中,事情似乎运作良好。如果有的话,那些会导致问题的已知问题是什么?
答案 0 :(得分:0)
某些缺点是您无法与服务通信,直到服务重新启动为止。如果您使用的安装程序会更新文件夹中的文件,但本身不会向您报告或接受远程命令,则任何失败的更新(例如在更新过程中断电)可能会使服务处于中断状态。您必须手动进行干预。拥有第二个服务来执行更新是一种流行的方法,因为更新服务可以尝试从失败的更新中恢复。