# 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