|
|
@@ -0,0 +1,162 @@
|
|
|
+# update-client.sh Windows 使用说明
|
|
|
+
|
|
|
+## 概述
|
|
|
+
|
|
|
+`update-client.sh` 脚本已经过修改,现在支持在 Windows (Git Bash) 环境中运行。该脚本用于从版本服务器下载并更新 H5 应用。
|
|
|
+
|
|
|
+## Windows 兼容性改进
|
|
|
+
|
|
|
+### 1. 操作系统检测
|
|
|
+脚本会自动检测运行环境:
|
|
|
+- Windows (Git Bash/MINGW/MSYS/Cygwin)
|
|
|
+- Linux
|
|
|
+- macOS
|
|
|
+
|
|
|
+### 2. 跨平台临时目录
|
|
|
+- **Windows**: 使用 `%TEMP%` 或 `%TMP%` 环境变量
|
|
|
+- **Linux/macOS**: 使用 `/tmp`
|
|
|
+
|
|
|
+### 3. 用户名处理
|
|
|
+- **Windows**: 优先使用 `%USERNAME%` 环境变量
|
|
|
+- **Linux/macOS**: 使用 `$USER` 环境变量
|
|
|
+
|
|
|
+### 4. 锁文件路径
|
|
|
+锁文件会根据操作系统自动选择合适的临时目录,避免路径问题。
|
|
|
+
|
|
|
+## 在 Windows 上运行
|
|
|
+
|
|
|
+### 前置要求
|
|
|
+
|
|
|
+1. **Git Bash**: 确保已安装 Git for Windows
|
|
|
+2. **必需工具**: Git Bash 通常已包含以下工具
|
|
|
+ - `curl`
|
|
|
+ - `wget`
|
|
|
+ - `tar`
|
|
|
+ - `grep`
|
|
|
+ - `sort`
|
|
|
+
|
|
|
+### 运行方式
|
|
|
+
|
|
|
+#### 1. 交互模式
|
|
|
+```bash
|
|
|
+./update-client.sh
|
|
|
+```
|
|
|
+
|
|
|
+脚本会提示您输入:
|
|
|
+- 用户名 (默认: deploy)
|
|
|
+- 密码
|
|
|
+- 下载目录 (默认: ./h5)
|
|
|
+- 是否包含 static 文件夹
|
|
|
+- 版本选择
|
|
|
+
|
|
|
+#### 2. 非交互模式(推荐)
|
|
|
+```bash
|
|
|
+# 不包含 static 文件夹
|
|
|
+./update-client.sh -u deploy -p mypassword -d ./h5 -v latest -y
|
|
|
+
|
|
|
+# 包含 static 文件夹
|
|
|
+./update-client.sh -u deploy -p mypassword -d ./h5 -v latest -y --include-static
|
|
|
+
|
|
|
+# 指定特定版本
|
|
|
+./update-client.sh -u deploy -p mypassword -v v1.1.5-20251129-062104 -y
|
|
|
+```
|
|
|
+
|
|
|
+#### 3. 静默模式
|
|
|
+```bash
|
|
|
+./update-client.sh -u deploy -p mypassword -v latest -y -s
|
|
|
+```
|
|
|
+
|
|
|
+### 命令行选项
|
|
|
+
|
|
|
+| 选项 | 说明 |
|
|
|
+|------|------|
|
|
|
+| `-u, --user USERNAME` | 指定用户名(默认: deploy) |
|
|
|
+| `-p, --password PASS` | 指定密码 |
|
|
|
+| `-d, --dir DIRECTORY` | 指定下载目录(默认: ./h5) |
|
|
|
+| `-v, --version VERSION` | 指定版本号(默认: latest) |
|
|
|
+| `-i, --include-static` | 包含 static 文件夹更新 |
|
|
|
+| `-y, --yes` | 跳过确认提示 |
|
|
|
+| `-s, --silent` | 静默模式(最小输出) |
|
|
|
+| `-h, --help` | 显示帮助信息 |
|
|
|
+
|
|
|
+## 脚本运行流程
|
|
|
+
|
|
|
+1. **检测操作系统**: 自动识别 Windows/Linux/macOS
|
|
|
+2. **初始化日志**: 在 `./logs` 目录创建日志文件
|
|
|
+3. **检查依赖工具**: 确认 curl, wget, tar 可用
|
|
|
+4. **创建锁文件**: 防止并发执行
|
|
|
+5. **服务器连接测试**: 验证用户名和密码
|
|
|
+6. **版本选择**: 显示可用版本列表
|
|
|
+7. **备份当前版本**: 自动备份现有文件
|
|
|
+8. **下载更新**: 从服务器下载指定版本
|
|
|
+9. **验证完整性**: 检查 MD5/SHA256 校验和(如果存在)
|
|
|
+10. **清理**: 删除锁文件
|
|
|
+
|
|
|
+## 日志文件
|
|
|
+
|
|
|
+日志文件保存在 `./logs` 目录,文件名格式:
|
|
|
+```
|
|
|
+update_YYYYMMDD_HHMMSS.log
|
|
|
+```
|
|
|
+
|
|
|
+## 故障排除
|
|
|
+
|
|
|
+### 1. 权限问题
|
|
|
+如果遇到权限错误,在 Git Bash 中运行:
|
|
|
+```bash
|
|
|
+chmod +x update-client.sh
|
|
|
+```
|
|
|
+
|
|
|
+### 2. 临时目录问题
|
|
|
+如果 `%TEMP%` 不可用,脚本会回退到 `/tmp`
|
|
|
+
|
|
|
+### 3. 锁文件残留
|
|
|
+如果脚本异常退出,可能留下锁文件:
|
|
|
+```bash
|
|
|
+# 手动删除锁文件
|
|
|
+rm -f $TEMP/update-client-$USERNAME.lock
|
|
|
+```
|
|
|
+
|
|
|
+### 4. 工具缺失
|
|
|
+确认 Git Bash 包含所需工具:
|
|
|
+```bash
|
|
|
+which curl wget tar
|
|
|
+```
|
|
|
+
|
|
|
+## 主要修改内容
|
|
|
+
|
|
|
+1. **添加 `detect_os()` 函数**: 自动检测操作系统类型
|
|
|
+2. **添加 `show_os_info()` 函数**: 显示运行环境信息
|
|
|
+3. **跨平台临时目录**: 根据 OS 选择合适的临时路径
|
|
|
+4. **用户名兼容**: 支持 Windows `%USERNAME%` 变量
|
|
|
+5. **锁文件路径**: 使用跨平台兼容的临时目录
|
|
|
+
|
|
|
+## 示例输出
|
|
|
+
|
|
|
+```
|
|
|
+[INFO] 日志文件: ./logs/update_20251218_103000.log
|
|
|
+[INFO] 检测到操作系统: windows
|
|
|
+[INFO] 临时目录: C:\Users\YourName\AppData\Local\Temp
|
|
|
+[INFO] 当前用户: YourName
|
|
|
+[INFO] 检查依赖工具...
|
|
|
+[✓] 依赖工具检查通过
|
|
|
+[INFO] 已创建锁文件
|
|
|
+[INFO] 用户名: deploy
|
|
|
+...
|
|
|
+```
|
|
|
+
|
|
|
+## 注意事项
|
|
|
+
|
|
|
+1. 脚本会自动备份现有文件,备份文件名包含时间戳
|
|
|
+2. 默认不更新 `static` 文件夹,需要时使用 `-i` 参数
|
|
|
+3. 建议使用非交互模式进行自动化部署
|
|
|
+4. 日志文件包含详细的执行信息,便于故障排查
|
|
|
+
|
|
|
+## 兼容性
|
|
|
+
|
|
|
+✅ Windows 10/11 (Git Bash)
|
|
|
+✅ Linux (所有发行版)
|
|
|
+✅ macOS
|
|
|
+✅ WSL (Windows Subsystem for Linux)
|
|
|
+✅ Cygwin
|
|
|
+✅ MSYS2
|