feat: 优化更新流程 - 添加保留上传工具选项
问题背景: - 之前每次更新都会删除并重新下载上传工具(43MB) - 重新下载耗时长(1-2分钟),且可能因网络问题失败 - 但如果不删除,万一上传工具有更新也无法获取 优化方案: 在更新流程中添加用户选择: 更新上传工具逻辑: 1. 检测是否已存在上传工具可执行文件 2. 验证文件大小(>30MB为有效) 3. 如果存在有效工具,显示选择菜单: ╔════════════════════════════════════════════════════════════╗ ║ 上传工具更新选项 ║ ╠════════════════════════════════════════════════════════════╣ ║ 1) 保留现有上传工具(推荐,节省下载时间) ║ ║ 2) 删除并重新下载(如果工具有更新) ║ ╚════════════════════════════════════════════════════════════╝ 选项1 - 保留现有工具: - 创建临时目录备份dist/玩玩云上传工具.exe - 更新upload-tool目录的脚本文件 - 恢复备份的可执行文件 - 优点: 节省1-2分钟下载时间,避免网络问题 选项2 - 重新下载: - 删除整个upload-tool目录 - 在后续步骤重新下载最新工具 - 适用: 官方发布了新版本上传工具 默认行为: - 默认选项1(保留),直接回车即可 - 如果现有文件大小异常(<30MB),自动重新下载 - 如果不存在上传工具,直接复制新目录 技术改动: - install.sh update_pull_latest_code() 函数 - 添加用户交互选择逻辑 - 添加文件大小验证 - 添加备份和恢复逻辑 使用建议: - 日常更新: 选择"1"保留,节省时间 - 重大版本更新: 选择"2"重新下载,确保最新 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
48
install.sh
48
install.sh
@@ -3328,10 +3328,52 @@ update_pull_latest_code() {
|
|||||||
cp -r "/tmp/${PROJECT_NAME}-update/frontend" "${PROJECT_DIR}/"
|
cp -r "/tmp/${PROJECT_NAME}-update/frontend" "${PROJECT_DIR}/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 更新上传工具
|
# 更新上传工具 - 询问用户是否保留
|
||||||
if [[ -d "/tmp/${PROJECT_NAME}-update/upload-tool" ]]; then
|
if [[ -d "/tmp/${PROJECT_NAME}-update/upload-tool" ]]; then
|
||||||
rm -rf "${PROJECT_DIR}/upload-tool"
|
# 检查是否已存在上传工具可执行文件
|
||||||
cp -r "/tmp/${PROJECT_NAME}-update/upload-tool" "${PROJECT_DIR}/"
|
if [[ -f "${PROJECT_DIR}/upload-tool/dist/玩玩云上传工具.exe" ]]; then
|
||||||
|
FILE_SIZE=$(stat -f%z "${PROJECT_DIR}/upload-tool/dist/玩玩云上传工具.exe" 2>/dev/null || stat -c%s "${PROJECT_DIR}/upload-tool/dist/玩玩云上传工具.exe" 2>/dev/null || echo "0")
|
||||||
|
if [[ $FILE_SIZE -gt 30000000 ]]; then
|
||||||
|
FILE_SIZE_MB=$(( FILE_SIZE / 1024 / 1024 ))
|
||||||
|
echo ""
|
||||||
|
print_info "检测到已存在上传工具(${FILE_SIZE_MB}MB)"
|
||||||
|
echo ""
|
||||||
|
echo "╔════════════════════════════════════════════════════════════╗"
|
||||||
|
echo "║ 上传工具更新选项 ║"
|
||||||
|
echo "╠════════════════════════════════════════════════════════════╣"
|
||||||
|
echo "║ 1) 保留现有上传工具(推荐,节省下载时间) ║"
|
||||||
|
echo "║ 2) 删除并重新下载(如果工具有更新) ║"
|
||||||
|
echo "╚════════════════════════════════════════════════════════════╝"
|
||||||
|
echo ""
|
||||||
|
read -p "▶ 请选择 [1/2, 默认:1]: " KEEP_UPLOAD_TOOL
|
||||||
|
KEEP_UPLOAD_TOOL=${KEEP_UPLOAD_TOOL:-1}
|
||||||
|
|
||||||
|
if [[ "$KEEP_UPLOAD_TOOL" == "1" ]]; then
|
||||||
|
print_success "保留现有上传工具"
|
||||||
|
# 只更新upload-tool目录的脚本文件,保留dist目录
|
||||||
|
mkdir -p "${PROJECT_DIR}/upload-tool-temp"
|
||||||
|
cp -r "${PROJECT_DIR}/upload-tool/dist" "${PROJECT_DIR}/upload-tool-temp/"
|
||||||
|
rm -rf "${PROJECT_DIR}/upload-tool"
|
||||||
|
cp -r "/tmp/${PROJECT_NAME}-update/upload-tool" "${PROJECT_DIR}/"
|
||||||
|
rm -rf "${PROJECT_DIR}/upload-tool/dist"
|
||||||
|
mv "${PROJECT_DIR}/upload-tool-temp/dist" "${PROJECT_DIR}/upload-tool/"
|
||||||
|
rm -rf "${PROJECT_DIR}/upload-tool-temp"
|
||||||
|
print_success "已保留现有上传工具,仅更新脚本文件"
|
||||||
|
else
|
||||||
|
print_info "将在后续步骤重新下载上传工具..."
|
||||||
|
rm -rf "${PROJECT_DIR}/upload-tool"
|
||||||
|
cp -r "/tmp/${PROJECT_NAME}-update/upload-tool" "${PROJECT_DIR}/"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print_warning "现有上传工具文件大小异常,将重新下载..."
|
||||||
|
rm -rf "${PROJECT_DIR}/upload-tool"
|
||||||
|
cp -r "/tmp/${PROJECT_NAME}-update/upload-tool" "${PROJECT_DIR}/"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# 不存在上传工具,直接复制
|
||||||
|
rm -rf "${PROJECT_DIR}/upload-tool"
|
||||||
|
cp -r "/tmp/${PROJECT_NAME}-update/upload-tool" "${PROJECT_DIR}/"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 更新后端代码文件(但不覆盖 data、storage、.env)
|
# 更新后端代码文件(但不覆盖 data、storage、.env)
|
||||||
|
|||||||
Reference in New Issue
Block a user