fix: Windows encoding (UTF-8 BOM + CRLF) and macOS Gatekeeper
- 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)
This commit is contained in:
@@ -92,6 +92,14 @@ export OPENCLAW_CONFIG_PATH="$PORTABLE_CONFIG_PATH"
|
|||||||
|
|
||||||
mkdir -p "$PORTABLE_STATE_DIR"
|
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
|
if [ ! -d "$OPENCLAW_DIR/node_modules" ]; then
|
||||||
echo -e " ${YELLOW}首次运行,正在安装依赖...${NC}"
|
echo -e " ${YELLOW}首次运行,正在安装依赖...${NC}"
|
||||||
|
|||||||
@@ -39,6 +39,11 @@ export OPENCLAW_CONFIG_PATH="$PORTABLE_CONFIG_PATH"
|
|||||||
|
|
||||||
mkdir -p "$PORTABLE_STATE_DIR"
|
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() {
|
check_status() {
|
||||||
HAS_MODULES="no"
|
HAS_MODULES="no"
|
||||||
|
|||||||
86
uclaw-scripts/Mac-安装并启动.command
Executable file
86
uclaw-scripts/Mac-安装并启动.command
Executable file
@@ -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"
|
||||||
@@ -1,88 +1,88 @@
|
|||||||
@echo off
|
@echo off
|
||||||
chcp 65001 >nul 2>&1
|
chcp 65001 >nul 2>&1
|
||||||
title U-Claw 虾盘 - OpenClaw 一键启动
|
title U-Claw - OpenClaw Launcher
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ╔══════════════════════════════════════╗
|
echo ========================================
|
||||||
echo ║ U-Claw 虾盘 v1.1 ║
|
echo U-Claw v1.1
|
||||||
echo ║ OpenClaw 一键启动 (Windows) ║
|
echo OpenClaw One-Click Launcher (Windows)
|
||||||
echo ╚══════════════════════════════════════╝
|
echo ========================================
|
||||||
echo.
|
echo.
|
||||||
echo 推荐场景:老电脑 / 临时电脑 / 不想改本机环境
|
echo Recommended: temporary PC / no local install
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
set "UCLAW_DIR=%~dp0"
|
set "UCLAW_DIR=%~dp0"
|
||||||
set "OPENCLAW_DIR=%UCLAW_DIR%openclaw"
|
set "OPENCLAW_DIR=%UCLAW_DIR%openclaw"
|
||||||
set "NODE_DIR=%UCLAW_DIR%runtime\node-win-x64"
|
set "NODE_DIR=%UCLAW_DIR%runtime\node-win-x64"
|
||||||
set "NODE_BIN=%NODE_DIR%\node.exe"
|
set "NODE_BIN=%NODE_DIR%\node.exe"
|
||||||
set "NPM_BIN=%NODE_DIR%\npm.cmd"
|
set "NPM_BIN=%NODE_DIR%\npm.cmd"
|
||||||
set "PORTABLE_HOME=%UCLAW_DIR%portable-home"
|
set "PORTABLE_HOME=%UCLAW_DIR%portable-home"
|
||||||
set "PORTABLE_STATE_DIR=%PORTABLE_HOME%\.openclaw"
|
set "PORTABLE_STATE_DIR=%PORTABLE_HOME%\.openclaw"
|
||||||
set "PORTABLE_CONFIG_PATH=%PORTABLE_STATE_DIR%\openclaw.json"
|
set "PORTABLE_CONFIG_PATH=%PORTABLE_STATE_DIR%\openclaw.json"
|
||||||
|
|
||||||
set "OPENCLAW_HOME=%PORTABLE_HOME%"
|
set "OPENCLAW_HOME=%PORTABLE_HOME%"
|
||||||
set "OPENCLAW_STATE_DIR=%PORTABLE_STATE_DIR%"
|
set "OPENCLAW_STATE_DIR=%PORTABLE_STATE_DIR%"
|
||||||
set "OPENCLAW_CONFIG_PATH=%PORTABLE_CONFIG_PATH%"
|
set "OPENCLAW_CONFIG_PATH=%PORTABLE_CONFIG_PATH%"
|
||||||
|
|
||||||
if not exist "%PORTABLE_STATE_DIR%" mkdir "%PORTABLE_STATE_DIR%"
|
if not exist "%PORTABLE_STATE_DIR%" mkdir "%PORTABLE_STATE_DIR%"
|
||||||
|
|
||||||
if not exist "%NODE_BIN%" (
|
if not exist "%NODE_BIN%" (
|
||||||
echo [错误] 找不到 Node.js 运行环境
|
echo [ERROR] Node.js not found
|
||||||
echo 请确保 runtime\node-win-x64 目录完整
|
echo Please ensure runtime\node-win-x64 directory is complete
|
||||||
echo.
|
echo.
|
||||||
pause
|
pause
|
||||||
exit /b 1
|
exit /b 1
|
||||||
)
|
)
|
||||||
|
|
||||||
for /f "tokens=*" %%v in ('"%NODE_BIN%" --version') do set NODE_VER=%%v
|
for /f "tokens=*" %%v in ('"%NODE_BIN%" --version') do set NODE_VER=%%v
|
||||||
echo Node.js 版本: %NODE_VER%
|
echo Node.js: %NODE_VER%
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
set "PATH=%NODE_DIR%;%NODE_DIR%\node_modules\.bin;%PATH%"
|
set "PATH=%NODE_DIR%;%NODE_DIR%\node_modules\.bin;%PATH%"
|
||||||
|
|
||||||
if not exist "%OPENCLAW_DIR%\node_modules" (
|
if not exist "%OPENCLAW_DIR%\node_modules" (
|
||||||
echo 首次运行,正在安装依赖...
|
echo First run - installing dependencies...
|
||||||
echo (使用淘宝镜像,请稍等)
|
echo Using China mirror, please wait...
|
||||||
echo.
|
echo.
|
||||||
cd /d "%OPENCLAW_DIR%"
|
cd /d "%OPENCLAW_DIR%"
|
||||||
call "%NPM_BIN%" install --registry=https://registry.npmmirror.com
|
call "%NPM_BIN%" install --registry=https://registry.npmmirror.com
|
||||||
echo.
|
echo.
|
||||||
echo 依赖安装完成!
|
echo Dependencies installed!
|
||||||
echo.
|
echo.
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "%OPENCLAW_DIR%\dist" (
|
if not exist "%OPENCLAW_DIR%\dist" (
|
||||||
echo 首次运行,正在构建...
|
echo First run - building...
|
||||||
cd /d "%OPENCLAW_DIR%"
|
cd /d "%OPENCLAW_DIR%"
|
||||||
call "%NPM_BIN%" run build
|
call "%NPM_BIN%" run build
|
||||||
echo.
|
echo.
|
||||||
)
|
)
|
||||||
|
|
||||||
cd /d "%OPENCLAW_DIR%"
|
cd /d "%OPENCLAW_DIR%"
|
||||||
|
|
||||||
REM 首次运行:自动写入最小配置(跳过 onboard)
|
REM First run: auto-create minimal config (skip onboard)
|
||||||
if not exist "%PORTABLE_CONFIG_PATH%" (
|
if not exist "%PORTABLE_CONFIG_PATH%" (
|
||||||
echo 首次运行,正在初始化配置...
|
echo First run - initializing config...
|
||||||
if not exist "%PORTABLE_STATE_DIR%" mkdir "%PORTABLE_STATE_DIR%"
|
if not exist "%PORTABLE_STATE_DIR%" mkdir "%PORTABLE_STATE_DIR%"
|
||||||
echo {"gateway":{"mode":"local","auth":{"token":"uclaw"}}} > "%PORTABLE_CONFIG_PATH%"
|
echo {"gateway":{"mode":"local","auth":{"token":"uclaw"}}} > "%PORTABLE_CONFIG_PATH%"
|
||||||
echo 配置已初始化
|
echo Config initialized
|
||||||
echo.
|
echo.
|
||||||
)
|
)
|
||||||
|
|
||||||
echo 正在启动 OpenClaw...
|
echo Starting OpenClaw...
|
||||||
echo 此窗口不要关闭,关闭后服务会停止。
|
echo DO NOT close this window!
|
||||||
echo.
|
echo.
|
||||||
echo ────────────────────────────────────
|
echo ----------------------------------------
|
||||||
echo 启动后浏览器会自动打开控制台
|
echo Browser will open automatically.
|
||||||
echo 首次使用请在控制台中配置:
|
echo First time setup in web console:
|
||||||
echo 1. 设置 AI 模型(DeepSeek / Kimi / 通义千问)
|
echo 1. Choose AI model (DeepSeek / Kimi / Qwen)
|
||||||
echo 2. 接入聊天平台(QQ / 飞书 / 钉钉)
|
echo 2. Connect chat platform (QQ / Feishu / DingTalk)
|
||||||
echo ────────────────────────────────────
|
echo ----------------------------------------
|
||||||
echo.
|
echo.
|
||||||
|
|
||||||
start "" http://127.0.0.1:18789/#token=uclaw
|
start "" http://127.0.0.1:18789/#token=uclaw
|
||||||
"%NODE_BIN%" openclaw.mjs gateway run --allow-unconfigured --force
|
"%NODE_BIN%" openclaw.mjs gateway run --allow-unconfigured --force
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo OpenClaw 已退出。拔掉 U 盘后,本次便携运行就会结束。
|
echo OpenClaw stopped. You can safely remove the USB drive.
|
||||||
pause
|
pause
|
||||||
|
|||||||
79
uclaw-scripts/Windows-安装并启动.bat
Normal file
79
uclaw-scripts/Windows-安装并启动.bat
Normal file
@@ -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"
|
||||||
Reference in New Issue
Block a user