如何更新已安装的Windows服务?

31

我用C#编写了一个Windows服务。

我已经在我的机器上安装并且它运行得很好。

当你安装一个服务时,exe是被复制到某个地方还是指向了我的bin文件夹?

这是为了让我知道,当我不时更新我的代码时,是否需要卸载并重新安装我的服务来更新它?


我会创建设置项目来安装Windows服务。 - Damith
不,InstallUtil.exe 在创建服务时使用原始可执行文件路径。正如 @Riz 所述,您可以从 services.msc 中检查路径。 - Burak Dobur
3个回答

42

如果你想要自动更新你的服务,你可以使用像谷歌奥马哈这样的框架。这是谷歌用来更新Chrome的技术。它与服务一起工作得很好,因为它在后台静默运行,就像一个服务一样。这篇文章提供了更多有关使用奥马哈自动更新服务的信息。

另一方面,如果你想手动更新服务:如果服务的位置没有改变,其可执行文件的名称也没有改变,那么你不必卸载和重新安装。只需使用net stop停止服务,使用新版本更新其可执行文件,然后使用net start再次启动即可。这种方法对我来说已经可靠地工作了几个月。


3

您可以通过从“运行”打开services.msc来检查已安装服务的路径。然后右键单击您的服务并查看“可执行文件路径”。

如果它指向您的bin目录,则每次成功编译时它都会更新。

enter image description here


嗨,你能帮忙吗?我正在修改我的Windows服务,已经重新构建了项目,但我的exe文件仍未更新。上次当我修改了服务并重新构建项目时,我的exe文件会自动更新。你会知道它显示的是最新时间。但这一次不起作用。我尝试了很多方法。 - Unknown

1

您需要卸载旧的 Windows 服务并安装新版本的 Windows 服务。

卸载:

   installutil /u yourproject.exe

安装:
   installutil yourproject.exe

3
这与其他回答相反。你能否提供更多信息? - Mike Lowery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接