diff --git a/install.sh b/install.sh index 9f2fbba..8646c32 100644 --- a/install.sh +++ b/install.sh @@ -3328,10 +3328,52 @@ update_pull_latest_code() { cp -r "/tmp/${PROJECT_NAME}-update/frontend" "${PROJECT_DIR}/" fi - # 更新上传工具 + # 更新上传工具 - 询问用户是否保留 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 # 更新后端代码文件(但不覆盖 data、storage、.env)