如何更新Delphi Datasnap服务器?

3
我建立了几个应用程序,这些应用程序通过Datasnap服务器接收和发送数据。 我的客户服务器上运行多个Datasnap服务器。 Datasnap服务器在他们的计算机上作为Windows服务运行。
如何远程更新这些服务器或最佳方法是什么?
也许将Datasnap服务器运行在IIS上而不是作为Windows服务会更好吗?
我能让服务器自己更新吗?也许如果我编写一个发送新版本的函数,它可以替换自己?

“简单”的手动方式是通过VNC连接到服务器,上传新的exe文件,停止服务,替换exe文件并重新启动服务。你面临哪些问题使这个过程麻烦? - Michael Vincent
@MichaelVincent 如果我们没有通过VNC访问权限,那么我们需要在许多许多的服务器(机器)上执行此操作吗? - Val Marinov
@Remi:正如Agustin所说,这个问题非常广泛。它也与Delphi无关。在Windows上运行的DataSnap服务可以是EXE或DLL,并且可以像任何其他EXE或DLL一样被替换/更新,但有相同的限制。 - Jon Robertson
我知道这个问题很广泛,但问题是我完全不知道该怎么做。最好的方法是在服务器内部设置一个更新函数,让它自己更新,但我不知道这是否可行?顺便说一下,该服务是一个EXE文件。 - Remi
我曾经编写过一个ISAPI扩展(重写了httpsrvr.dll),可以用于在不中断客户端连接的情况下实时更新(旧式)DataSnap appserver DLL。它会将传入的请求暂停,等待完成当前正在运行的任何请求,卸载appserver DLL,替换它,重新加载并继续提供服务。 - Ondrej Kelle
显示剩余2条评论
1个回答

0

我看不到在没有让客户自己更新或使用像VNC这样的远程登录方式的情况下,如何更新客户机上的exe文件。如果有更好的方法,我会很高兴知道。

以下是我考虑的一种方法:

我将寻求一个单独的应用程序,该应用程序由服务定期调用(每天/每周),以查找服务器(或其他地方)上的新软件版本,下载它,停止服务,替换服务的exe文件并重新启动服务。

在新的服务exe中,我会添加一个定期调用此应用程序的功能,因此您只需要执行一次此操作。

这假设运行您的软件的计算机具有Internet访问权限。

不要忘记包括更新更新程序的机制。


谢谢,这看起来很合理。但是如何更新更新程序呢?不能一直使用一个应用程序来检查另一个应用程序的更新。 - Remi

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