0

我目前正在开发一个网络应用程序更新系统。它的工作方式类似于版本控制,其中主服务器是存储库。我的系统和 vc 之间的区别在于你不能提交/推送等到主服务器。

所以这个想法是:

用户转到管理员 > 更新

检查更新

主存储库发回所有最新版本文件及其校验和的列表

该应用程序会根据服务器上的文件检查此列表。如果有些过期/不匹配校验和,则请求这些文件内容,并覆盖服务器上的文件。

我的问题是,如果更新文件本身需要更新怎么办......我将如何更新它?即使它当前已执行,我能否覆盖它?还是会出现错误,整个事情都爆炸了?我猜想当前文件存储在 ram 中,所以它可以覆盖自己,但我不确定。

谢谢

4

1 回答 1

0

这是您可以解决的一种方法:

  • 只允许通过“超级管理员”页面更新主文件
  • 创建一个“注册表”,程序的任何部分都可以访问它(有些只能读取,有些可以写入)
  • 当通过超级管理员更新文件时,它会检查注册表是否正在读取文件
  • 当超级管理员更新任何文件时,它会设置“注册表”,表示正在更新给定文件(实际上是锁定它)
  • 当用户尝试更新系统时,它会检查注册表,如果文件设置为“锁定”,则不会尝试下载它
  • 当用户能够下载它时,它会设置注册表说正在读取文件(并在完成后将其关闭)
于 2013-01-11T02:02:25.353 回答