cc 3 月之前
父節點
當前提交
ac6ff57be9
共有 3 個文件被更改,包括 111 次插入 和 0 次删除
  1. 58 0
      cmd/uninstall.bat
  2. 二進制
      cmd/uninstall.exe
  3. 53 0
      cmd/uninstall.sh

+ 58 - 0
cmd/uninstall.bat

@@ -0,0 +1,58 @@
+@echo off
+setlocal EnableDelayedExpansion
+
+:: ==========================================
+::  卸载清理脚本
+::  兼容: Windows 10 / Windows 11
+:: ==========================================
+
+:: [安全检查] 防止 APPDATA 变量为空导致灾难性删除
+if "%APPDATA%"=="" (
+    echo [错误] %%APPDATA%% 环境变量未定义,终止执行!
+    pause
+    exit /b 1
+)
+
+:: 1. 强制关闭应用进程
+echo [1/2] 正在终止 qingjian-client.exe 进程...
+taskkill /F /IM "qingjian-client.exe" >nul 2>&1
+if !errorlevel! equ 0 (
+    echo       进程已终止。
+    timeout /t 2 /nobreak >nul
+) else (
+    echo       未发现运行中的进程或已提前退出。
+)
+
+:: 2. 递归删除自定义数据目录
+echo [2/2] 正在清理用户数据目录...
+
+:: 【处理第一个目录】
+if exist "%APPDATA%\QingJian\" (
+    rd /s /q "%APPDATA%\QingJian" >nul 2>&1
+    :: 核心修复:不依赖 errorlevel,直接检查目录是否真的还在
+    if not exist "%APPDATA%\QingJian\" (
+        echo       已删除: %APPDATA%\QingJian
+    ) else (
+        echo       [失败] 无法删除: %APPDATA%\QingJian ^(可能被占用或权限不足^)
+    )
+) else (
+    echo       跳过^(不存在^): %APPDATA%\QingJian
+)
+
+:: 【处理第二个目录】
+if exist "%APPDATA%\qingjian-client\" (
+    rd /s /q "%APPDATA%\qingjian-client" >nul 2>&1
+    :: 核心修复:不依赖 errorlevel,直接检查目录是否真的还在
+    if not exist "%APPDATA%\qingjian-client\" (
+        echo       已删除: %APPDATA%\qingjian-client
+    ) else (
+        echo       [失败] 无法删除: %APPDATA%\qingjian-client ^(可能被占用或权限不足^)
+    )
+) else (
+    echo       跳过^(不存在^): %APPDATA%\qingjian-client
+)
+
+echo.
+echo ? 清理完成!按任意键退出...
+pause >nul
+endlocal

二進制
cmd/uninstall.exe


+ 53 - 0
cmd/uninstall.sh

@@ -0,0 +1,53 @@
+#!/bin/bash
+
+# ==========================================
+#  QingJian Client 卸载清理脚本 (Linux)
+# ==========================================
+
+# [安全检查] 防止 $HOME 变量为空导致灾难性删除
+if [ -z "$HOME" ]; then
+    echo "[错误] \$HOME 环境变量未定义,终止执行!"
+    exit 1
+fi
+
+# 1. 强制关闭应用进程
+echo "[1/2] 正在终止 qingjian-client 进程..."
+pkill -9 -f "qingjian-client" 2>/dev/null
+pkill_exit_code=$?
+
+if [ $pkill_exit_code -eq 0 ]; then
+    echo "       进程已终止。"
+    # 等待进程完全释放文件句柄
+    sleep 2
+elif [ $pkill_exit_code -eq 1 ]; then
+    echo "       未发现运行中的进程或已提前退出。"
+else
+    echo "       [警告] 尝试终止进程时发生未知错误(错误码: $pkill_exit_code)。"
+fi
+
+# 2. 递归删除自定义数据目录
+echo "[2/2] 正在清理用户数据目录..."
+
+# 定义需要清理的目录列表
+DIRS=(
+    "$HOME/.config/qingjian-client"
+    "$HOME/.local/share/QingJian"
+    "$HOME/.qingjian-client"
+)
+
+# 遍历并删除目录
+for dir in "${DIRS[@]}"; do
+    if [ -d "$dir" ]; then
+        rm -rf "$dir"
+        if [ $? -eq 0 ]; then
+            echo "       已删除: $dir"
+        else
+            echo "       [失败] 无法删除: $dir (可能存在权限问题或文件被占用)"
+        fi
+    else
+        echo "       跳过(不存在): $dir"
+    fi
+done
+
+echo ""
+echo "✔ 清理完成!"