1

我知道很多软件都是由一起安装的windows服务更新的。我将该服务用作我的客户端应用程序的更新助手和数据服务器。但是我被困在如何通过该服务控制我的客户端应用程序。

首先,我的服务将检查远程服务器上的更新,然后下载文件。

它会将新闻广播给客户端,客户端会询问用户是现在更新还是下次执行。

在更新的时候,客户端应用程序不能删除它自己的可执行文件,所以,如果它在它不执行的时候要求服务器这样做是有意义的,然后当完成删除和重命名文件时,它会重新 -执行客户端。

如果服务在会话 0 中,它不能重新执行客户端到同一个用户会话。

另一个可能的问题是服务何时需要更新。它可以通过由客户端而不是自身更新来解决。

所以,在更新客户端和服务器的情况下,我是否需要创建第三个应用程序来完成这项工作。如果这个第三个应用程序是一个控制台应用程序,那么从服务中执行它是没有问题的,对吧?

如果有一个不包含此第 3 个应用程序的解决方案,那将是最好的。


笔记:

该服务不仅仅是一个更新服务,而是一个通知用户访问和权限的服务器。主客户端应用程序不会user information database直接访问。

4

1 回答 1

8

如果服务在会话 0 中,它不能重新执行客户端到同一个用户会话。

是的,如果您使用CreateProcessAsUser()指定用户帐户和桌面来运行应用程序,它会。客户端可以在终止自身之前将该信息传达给服务。

但无论如何,更新 exe 要求它首先停止运行。因此,在更新服务时,尤其是由于服务不仅仅处理客户端更新,使用安装程序停止服务、替换 exe 并重新启动服务会更安全。在这种情况下,为什么不使用安装程序更新客户端呢?下载的更新可能是一个独立的安装程序,它会根据需要停止客户端和服务,替换文件,然后让客户端或服务在安装程序退出后删除安装程序,或者安装程序可以要求 Windows 删除安装程序。下次操作系统重启。

于 2013-08-22T19:58:33.070 回答