@echo off
chcp 65001 >nul
setlocal EnableExtensions
cd /d "%~dp0"
title 长乐助手 一键修复启动

echo.
echo ==========================================
echo   长乐助手 一键修复启动
echo ==========================================
echo 当前目录: %CD%
echo.
echo 本工具会关闭残留的长乐助手/长乐/wxbot进程，并尝试释放 8080/5000 端口。
echo 如果你正在使用另一个版本，请先保存操作。
echo.
pause

echo.
echo [1/4] 关闭残留进程和端口占用...
powershell -NoProfile -ExecutionPolicy Bypass -Command "$ErrorActionPreference='SilentlyContinue'; $ports=@(8080,5000); Get-NetTCPConnection -State Listen -LocalPort $ports | Select-Object -ExpandProperty OwningProcess -Unique | ForEach-Object { Stop-Process -Id $_ -Force }; Get-Process '长乐助手','长乐','wxbot' | Stop-Process -Force"

echo.
echo [2/4] 检查下载包是否完整...
set "APP_EXE="
if exist "长乐助手.exe" set "APP_EXE=长乐助手.exe"
if not defined APP_EXE if exist "长乐.exe" set "APP_EXE=长乐.exe"

set "HAS_ERROR=0"
if not defined APP_EXE (
  echo [错误] 没找到主程序 exe。请确认是在完整解压后的程序目录里运行。
  set "HAS_ERROR=1"
)
if not exist "_internal\" (
  echo [错误] 缺少 _internal 文件夹，通常是没有完整解压。
  set "HAS_ERROR=1"
)
if not exist "_internal\pythonnet\runtime\Python.Runtime.dll" (
  echo [错误] 缺少 _internal\pythonnet\runtime\Python.Runtime.dll，可能被杀毒拦截或解压不完整。
  set "HAS_ERROR=1"
)
if not exist "wxbot\wxbot.exe" (
  echo [错误] 缺少 wxbot\wxbot.exe，微信登录会不可用，可能被杀毒拦截。
  set "HAS_ERROR=1"
)
if not exist "wxbot\NoveHelper.dll" (
  echo [错误] 缺少 wxbot\NoveHelper.dll，微信登录会不可用。
  set "HAS_ERROR=1"
)
if not exist "wxbot\NoveLoader.dll" (
  echo [错误] 缺少 wxbot\NoveLoader.dll，微信登录会不可用。
  set "HAS_ERROR=1"
)

echo.
echo [3/4] 检查 data 是否可写...
if not exist "data\" mkdir "data" >nul 2>nul
echo ok > "data\.write_test.tmp" 2>nul
if not exist "data\.write_test.tmp" (
  echo [错误] data 目录不可写。请不要放在需要管理员权限的目录，或右键以管理员身份运行。
  set "HAS_ERROR=1"
) else (
  del /f /q "data\.write_test.tmp" >nul 2>nul
)

if "%HAS_ERROR%"=="1" (
  echo.
  echo 修复未完成：请重新下载完整压缩包、完整解压，并把本目录加入杀毒软件信任区后再试。
  echo 如果仍不行，请打开程序里的“客服”复制诊断信息发给管理员。
  echo.
  pause
  exit /b 1
)

echo.
echo [4/4] 启动程序...
echo 主程序: %APP_EXE%
start "" "%APP_EXE%"
echo 已启动。如果还是打不开，请到客服页面复制诊断信息。
echo.
pause
