自动更新系统原理说明文档
概述
本自动更新系统是一个基于Node.js的应用程序,用于自动检查、下载、解压并安装软件更新。它由多个脚本和一个更新服务器组成,能够在后台自动执行更新流程,确保软件保持最新状态。
组件说明
- SetUp.bat: 主批处理脚本,用于检查管理员权限,若无权限则请求提升,然后调用
.\UpdateClient\SetUp.bat
。 - .\UpdateClient\SetUp.bat: 更新客户端的批处理脚本,用于安装必要的Node.js模块并执行
installService.js
。 - installService.js: Node.js脚本,创建服务来监控和执行更新操作,复制必要的脚本到临时目录,并将当前路径添加到
_paths_.ini
文件。 - checkAndUpdate.js: Node.js脚本,检查更新信息,下载并解压更新包,执行更新安装脚本或重启软件。
- SetUpTemp.bat: 临时批处理脚本,用于在临时目录中安装必要的Node.js模块。
- update-server.js: 更新服务器的Node.js脚本,提供更新信息和更新文件的下载。
工作流程
- 权限检查与提升:
SetUp.bat
检查是否以管理员权限运行,若不是,则创建VBS脚本提升权限。 - 初始化更新客户端:
SetUp.bat
调用.\UpdateClient\SetUp.bat
,该脚本安装必要的Node.js模块并执行installService.js
。 - 服务安装与启动:
installService.js
创建一个Windows服务,用于执行更新检查和安装。同时,将当前软件路径添加到paths.ini
文件以供后续使用。 - 更新检查:
checkAndUpdate.js
从更新服务器获取最新的更新信息,如果发现新版本,则继续下载更新。 - 下载更新: 更新文件通过HTTP请求从服务器下载到本地。
- 解压更新: 下载的ZIP文件被解压到指定的目录。
- 安装更新: 解压后的文件通过执行
SetUp.bat
脚本安装或通过重启软件应用更新。 - 更新服务器:
update-server.js
运行一个简单的HTTP服务器,提供更新信息和更新文件的下载。
调用关系图
+----------------+ +----------------------+
| SetUp.bat | | .\UpdateClient |
| (主批处理) +----->+ SetUp.bat |
+----------------+ | (更新客户端批处理) |+----------+-----------+|v+----------+-----------+| installService.js || (安装服务Node脚本) |+----------+-----------+|v+----------+-----------+| checkAndUpdate.js ||(检查和应用更新Node脚本)|+----------+-----------+|v+----------+-----------+| SetUpTemp.bat || (临时目录Node模块安装) |+----------------------+
在这个流程图中,update-server.js不直接参与自动更新的客户端流程。它独立运行,提供必要的更新文件和元数据。以下是update-server.js的位置和作用:+-----------------------+
| update-server.js |
| (更新服务器Node脚本) |
| 托管更新文件和元数据 |
+-----------------------+
update-server.js运行在服务器端,客户端通过checkAndUpdate.js与之通信,获取更新信息并下载更新包。
注意事项
- 在执行更新流程之前,确保所有脚本和服务都已经正确配置。
- 更新服务器应始终可用,以便客户端可以检查和下载更新。
- 确保更新过程不会干扰到正在运行的应用程序的正常使用。
- 更新脚本应具有错误处理机制,以应对下载失败、文件解压错误等异常情况。