From 6f7af5fa49d10b28dd82c6433fc0169d22c67473 Mon Sep 17 00:00:00 2001 From: dongsheng123132 <90887123+dongsheng123132@users.noreply.github.com> Date: Tue, 10 Mar 2026 18:43:58 +0800 Subject: [PATCH] fix: Windows encoding (UTF-8 BOM + CRLF) and macOS Gatekeeper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Windows bat files: UTF-8 BOM + CRLF + English text to avoid garbled Chinese in cmd.exe - macOS scripts: xattr -rd com.apple.quarantine to fix "unverified developer" popup - New install scripts: Mac-安装并启动.command, Windows-安装并启动.bat (extract tar.gz to local disk then launch) --- uclaw-scripts/Mac-从U盘启动.command | 8 ++ uclaw-scripts/Mac-全部功能.command | 5 + uclaw-scripts/Mac-安装并启动.command | 86 +++++++++++++ uclaw-scripts/Windows-从U盘启动.bat | 176 +++++++++++++-------------- uclaw-scripts/Windows-安装并启动.bat | 79 ++++++++++++ 5 files changed, 266 insertions(+), 88 deletions(-) create mode 100755 uclaw-scripts/Mac-安装并启动.command create mode 100644 uclaw-scripts/Windows-安装并启动.bat diff --git a/uclaw-scripts/Mac-从U盘启动.command b/uclaw-scripts/Mac-从U盘启动.command index 7f4ab85..8207ae7 100644 --- a/uclaw-scripts/Mac-从U盘启动.command +++ b/uclaw-scripts/Mac-从U盘启动.command @@ -92,6 +92,14 @@ export OPENCLAW_CONFIG_PATH="$PORTABLE_CONFIG_PATH" mkdir -p "$PORTABLE_STATE_DIR" +# 移除 macOS 隔离标记(解决"无法验证开发者"弹窗) +if xattr -l "$NODE_BIN" 2>/dev/null | grep -q "com.apple.quarantine"; then + echo -e " ${YELLOW}正在移除 macOS 安全限制...${NC}" + xattr -rd com.apple.quarantine "$UCLAW_DIR" 2>/dev/null || true + echo -e " ${GREEN}已移除${NC}" + echo "" +fi + # 检查依赖 if [ ! -d "$OPENCLAW_DIR/node_modules" ]; then echo -e " ${YELLOW}首次运行,正在安装依赖...${NC}" diff --git a/uclaw-scripts/Mac-全部功能.command b/uclaw-scripts/Mac-全部功能.command index 06a5d2d..5469418 100755 --- a/uclaw-scripts/Mac-全部功能.command +++ b/uclaw-scripts/Mac-全部功能.command @@ -39,6 +39,11 @@ export OPENCLAW_CONFIG_PATH="$PORTABLE_CONFIG_PATH" mkdir -p "$PORTABLE_STATE_DIR" +# 移除 macOS 隔离标记(解决"无法验证开发者"弹窗) +if xattr -l "$NODE_BIN" 2>/dev/null | grep -q "com.apple.quarantine"; then + xattr -rd com.apple.quarantine "$UCLAW_DIR" 2>/dev/null || true +fi + # 检查安装状态 check_status() { HAS_MODULES="no" diff --git a/uclaw-scripts/Mac-安装并启动.command b/uclaw-scripts/Mac-安装并启动.command new file mode 100755 index 0000000..685f34b --- /dev/null +++ b/uclaw-scripts/Mac-安装并启动.command @@ -0,0 +1,86 @@ +#!/bin/bash +# ============================================================ +# U-Claw 虾盘 - macOS 一键安装并启动 +# 从 U 盘解压到电脑,然后启动 OpenClaw +# ============================================================ + +GREEN='\033[0;32m' +CYAN='\033[0;36m' +RED='\033[0;31m' +YELLOW='\033[1;33m' +NC='\033[0m' + +clear +echo "" +echo -e "${CYAN}" +echo " ╔══════════════════════════════════════╗" +echo " ║ U-Claw 虾盘 v1.1 ║" +echo " ║ 一键安装并启动 (macOS) ║" +echo " ╚══════════════════════════════════════╝" +echo -e "${NC}" + +USB_DIR="$(cd "$(dirname "$0")" && pwd)" +ARCHIVE="$USB_DIR/U-Claw.tar.gz" +INSTALL_DIR="$HOME/U-Claw" + +# 移除 macOS 隔离标记(解决"无法验证开发者"弹窗) +xattr -rd com.apple.quarantine "$USB_DIR" 2>/dev/null || true + +# 检查压缩包 +if [ ! -f "$ARCHIVE" ]; then + echo -e " ${RED}错误: 找不到 U-Claw.tar.gz${NC}" + echo " 请确保此脚本和压缩包在同一目录" + read -p " 按回车键退出..." + exit 1 +fi + +# 检查是否已安装 +if [ -d "$INSTALL_DIR/openclaw/node_modules" ]; then + echo -e " ${GREEN}检测到已安装的 U-Claw${NC}" + echo " 位置: $INSTALL_DIR" + echo "" + echo -e " ${YELLOW}[1] 直接启动(跳过解压)${NC}" + echo " [2] 重新安装(覆盖现有)" + echo "" + read -p " 请选择 [1/2,默认1]: " choice + choice="${choice:-1}" + if [ "$choice" = "2" ]; then + echo "" + echo -e " ${YELLOW}正在重新安装...${NC}" + rm -rf "$INSTALL_DIR" + else + echo "" + echo -e " ${CYAN}跳过解压,直接启动...${NC}" + fi +fi + +# 解压(如果需要) +if [ ! -d "$INSTALL_DIR/openclaw/node_modules" ]; then + echo "" + echo -e " ${CYAN}正在解压 U-Claw 到 $INSTALL_DIR ...${NC}" + echo " 这可能需要 30-60 秒,请稍等..." + echo "" + + mkdir -p "$HOME" + cd "$HOME" + tar xzf "$ARCHIVE" + + if [ $? -ne 0 ]; then + echo -e " ${RED}解压失败!${NC}" + read -p " 按回车键退出..." + exit 1 + fi + + echo -e " ${GREEN}解压完成!${NC}" + echo "" +fi + +# 删除 Windows 相关文件(可选,不影响运行) +# rm -f "$INSTALL_DIR"/Windows-*.bat 2>/dev/null + +# 启动 OpenClaw +echo -e " ${CYAN}正在启动 OpenClaw...${NC}" +echo "" + +cd "$INSTALL_DIR" +exec bash "$INSTALL_DIR/Mac-从U盘启动.command" diff --git a/uclaw-scripts/Windows-从U盘启动.bat b/uclaw-scripts/Windows-从U盘启动.bat index 3778a8a..b92a105 100644 --- a/uclaw-scripts/Windows-从U盘启动.bat +++ b/uclaw-scripts/Windows-从U盘启动.bat @@ -1,88 +1,88 @@ -@echo off -chcp 65001 >nul 2>&1 -title U-Claw 虾盘 - OpenClaw 一键启动 - -echo. -echo ╔══════════════════════════════════════╗ -echo ║ U-Claw 虾盘 v1.1 ║ -echo ║ OpenClaw 一键启动 (Windows) ║ -echo ╚══════════════════════════════════════╝ -echo. -echo 推荐场景:老电脑 / 临时电脑 / 不想改本机环境 -echo. - -set "UCLAW_DIR=%~dp0" -set "OPENCLAW_DIR=%UCLAW_DIR%openclaw" -set "NODE_DIR=%UCLAW_DIR%runtime\node-win-x64" -set "NODE_BIN=%NODE_DIR%\node.exe" -set "NPM_BIN=%NODE_DIR%\npm.cmd" -set "PORTABLE_HOME=%UCLAW_DIR%portable-home" -set "PORTABLE_STATE_DIR=%PORTABLE_HOME%\.openclaw" -set "PORTABLE_CONFIG_PATH=%PORTABLE_STATE_DIR%\openclaw.json" - -set "OPENCLAW_HOME=%PORTABLE_HOME%" -set "OPENCLAW_STATE_DIR=%PORTABLE_STATE_DIR%" -set "OPENCLAW_CONFIG_PATH=%PORTABLE_CONFIG_PATH%" - -if not exist "%PORTABLE_STATE_DIR%" mkdir "%PORTABLE_STATE_DIR%" - -if not exist "%NODE_BIN%" ( - echo [错误] 找不到 Node.js 运行环境 - echo 请确保 runtime\node-win-x64 目录完整 - echo. - pause - exit /b 1 -) - -for /f "tokens=*" %%v in ('"%NODE_BIN%" --version') do set NODE_VER=%%v -echo Node.js 版本: %NODE_VER% -echo. - -set "PATH=%NODE_DIR%;%NODE_DIR%\node_modules\.bin;%PATH%" - -if not exist "%OPENCLAW_DIR%\node_modules" ( - echo 首次运行,正在安装依赖... - echo (使用淘宝镜像,请稍等) - echo. - cd /d "%OPENCLAW_DIR%" - call "%NPM_BIN%" install --registry=https://registry.npmmirror.com - echo. - echo 依赖安装完成! - echo. -) - -if not exist "%OPENCLAW_DIR%\dist" ( - echo 首次运行,正在构建... - cd /d "%OPENCLAW_DIR%" - call "%NPM_BIN%" run build - echo. -) - -cd /d "%OPENCLAW_DIR%" - -REM 首次运行:自动写入最小配置(跳过 onboard) -if not exist "%PORTABLE_CONFIG_PATH%" ( - echo 首次运行,正在初始化配置... - if not exist "%PORTABLE_STATE_DIR%" mkdir "%PORTABLE_STATE_DIR%" - echo {"gateway":{"mode":"local","auth":{"token":"uclaw"}}} > "%PORTABLE_CONFIG_PATH%" - echo 配置已初始化 - echo. -) - -echo 正在启动 OpenClaw... -echo 此窗口不要关闭,关闭后服务会停止。 -echo. -echo ──────────────────────────────────── -echo 启动后浏览器会自动打开控制台 -echo 首次使用请在控制台中配置: -echo 1. 设置 AI 模型(DeepSeek / Kimi / 通义千问) -echo 2. 接入聊天平台(QQ / 飞书 / 钉钉) -echo ──────────────────────────────────── -echo. - -start "" http://127.0.0.1:18789/#token=uclaw -"%NODE_BIN%" openclaw.mjs gateway run --allow-unconfigured --force - -echo. -echo OpenClaw 已退出。拔掉 U 盘后,本次便携运行就会结束。 -pause +@echo off +chcp 65001 >nul 2>&1 +title U-Claw - OpenClaw Launcher + +echo. +echo ======================================== +echo U-Claw v1.1 +echo OpenClaw One-Click Launcher (Windows) +echo ======================================== +echo. +echo Recommended: temporary PC / no local install +echo. + +set "UCLAW_DIR=%~dp0" +set "OPENCLAW_DIR=%UCLAW_DIR%openclaw" +set "NODE_DIR=%UCLAW_DIR%runtime\node-win-x64" +set "NODE_BIN=%NODE_DIR%\node.exe" +set "NPM_BIN=%NODE_DIR%\npm.cmd" +set "PORTABLE_HOME=%UCLAW_DIR%portable-home" +set "PORTABLE_STATE_DIR=%PORTABLE_HOME%\.openclaw" +set "PORTABLE_CONFIG_PATH=%PORTABLE_STATE_DIR%\openclaw.json" + +set "OPENCLAW_HOME=%PORTABLE_HOME%" +set "OPENCLAW_STATE_DIR=%PORTABLE_STATE_DIR%" +set "OPENCLAW_CONFIG_PATH=%PORTABLE_CONFIG_PATH%" + +if not exist "%PORTABLE_STATE_DIR%" mkdir "%PORTABLE_STATE_DIR%" + +if not exist "%NODE_BIN%" ( + echo [ERROR] Node.js not found + echo Please ensure runtime\node-win-x64 directory is complete + echo. + pause + exit /b 1 +) + +for /f "tokens=*" %%v in ('"%NODE_BIN%" --version') do set NODE_VER=%%v +echo Node.js: %NODE_VER% +echo. + +set "PATH=%NODE_DIR%;%NODE_DIR%\node_modules\.bin;%PATH%" + +if not exist "%OPENCLAW_DIR%\node_modules" ( + echo First run - installing dependencies... + echo Using China mirror, please wait... + echo. + cd /d "%OPENCLAW_DIR%" + call "%NPM_BIN%" install --registry=https://registry.npmmirror.com + echo. + echo Dependencies installed! + echo. +) + +if not exist "%OPENCLAW_DIR%\dist" ( + echo First run - building... + cd /d "%OPENCLAW_DIR%" + call "%NPM_BIN%" run build + echo. +) + +cd /d "%OPENCLAW_DIR%" + +REM First run: auto-create minimal config (skip onboard) +if not exist "%PORTABLE_CONFIG_PATH%" ( + echo First run - initializing config... + if not exist "%PORTABLE_STATE_DIR%" mkdir "%PORTABLE_STATE_DIR%" + echo {"gateway":{"mode":"local","auth":{"token":"uclaw"}}} > "%PORTABLE_CONFIG_PATH%" + echo Config initialized + echo. +) + +echo Starting OpenClaw... +echo DO NOT close this window! +echo. +echo ---------------------------------------- +echo Browser will open automatically. +echo First time setup in web console: +echo 1. Choose AI model (DeepSeek / Kimi / Qwen) +echo 2. Connect chat platform (QQ / Feishu / DingTalk) +echo ---------------------------------------- +echo. + +start "" http://127.0.0.1:18789/#token=uclaw +"%NODE_BIN%" openclaw.mjs gateway run --allow-unconfigured --force + +echo. +echo OpenClaw stopped. You can safely remove the USB drive. +pause diff --git a/uclaw-scripts/Windows-安装并启动.bat b/uclaw-scripts/Windows-安装并启动.bat new file mode 100644 index 0000000..6d87da6 --- /dev/null +++ b/uclaw-scripts/Windows-安装并启动.bat @@ -0,0 +1,79 @@ +@echo off +chcp 65001 >nul 2>&1 +title U-Claw - Install and Launch + +echo. +echo ======================================== +echo U-Claw v1.1 +echo Install and Launch (Windows) +echo ======================================== +echo. + +set "USB_DIR=%~dp0" +set "ARCHIVE=%USB_DIR%U-Claw.tar.gz" +set "INSTALL_DIR=%USERPROFILE%\U-Claw" + +REM Check archive +if not exist "%ARCHIVE%" ( + echo [ERROR] U-Claw.tar.gz not found + echo Please ensure this script and the archive are in the same directory + echo. + pause + exit /b 1 +) + +REM Check if already installed +if exist "%INSTALL_DIR%\openclaw\node_modules" ( + echo U-Claw already installed at: %INSTALL_DIR% + echo. + echo [1] Launch directly (skip extract) + echo [2] Reinstall (overwrite) + echo. + set /p choice=" Choose [1/2, default 1]: " + if "%choice%"=="2" ( + echo. + echo Reinstalling... + rmdir /s /q "%INSTALL_DIR%" >nul 2>&1 + ) else ( + echo. + echo Launching... + goto :start + ) +) + +REM Extract +echo. +echo Extracting U-Claw to %INSTALL_DIR% ... +echo This may take 1-2 minutes... +echo. + +where tar >nul 2>&1 +if %errorlevel%==0 ( + cd /d "%USERPROFILE%" + tar xzf "%ARCHIVE%" + if %errorlevel% neq 0 ( + echo Extract failed! Please extract U-Claw.tar.gz manually + echo using 7-Zip or WinRAR to %USERPROFILE% + pause + exit /b 1 + ) +) else ( + echo tar command not available on this Windows version + echo Please extract U-Claw.tar.gz manually using 7-Zip or WinRAR + echo Extract to: %USERPROFILE% + echo. + echo Then run: %INSTALL_DIR%\Windows-从U盘启动.bat + pause + exit /b 1 +) + +echo Extract complete! +echo. + +:start +REM Launch OpenClaw +echo Starting OpenClaw... +echo. + +cd /d "%INSTALL_DIR%" +call "%INSTALL_DIR%\Windows-从U盘启动.bat"