This commit is contained in:
2025-10-10 13:39:16 +08:00
parent a28d846638
commit d77ebab153
10 changed files with 420 additions and 8 deletions

View File

@@ -19,7 +19,7 @@
"@vitejs/plugin-vue": "^4.4.1",
"chalk": "^4.1.2",
"chokidar": "^3.5.3",
"electron": "^28.2.0",
"electron": "^28.3.3",
"electron-builder": "^25.1.6",
"express": "^5.1.0",
"fs-extra": "^11.3.2",

View File

@@ -18,7 +18,6 @@ const PLATFORM_LABEL: Record<PlatformKey, string> = {
const accounts = ref<BanmaAccount[]>([])
async function load() {
// 目前后端只有斑马接口,其它平台先共用此接口占位
const res = await zebraApi.getAccounts()
const list = (res as any)?.data ?? res
accounts.value = Array.isArray(list) ? list : []

View File

@@ -0,0 +1,88 @@
@echo off
setlocal enabledelayedexpansion
set APP_ASAR=%~1
set UPDATE_FILE=%~2
set EXE_PATH=%~3
set LOG_FILE=%TEMP%\electron-update.log
echo ======================================== > "%LOG_FILE%"
echo Electron App Auto-Update Helper >> "%LOG_FILE%"
echo Started: %date% %time% >> "%LOG_FILE%"
echo ======================================== >> "%LOG_FILE%"
echo. >> "%LOG_FILE%"
if not exist "%UPDATE_FILE%" (
echo [ERROR] Update file not found: %UPDATE_FILE% >> "%LOG_FILE%"
goto :start_app
)
echo [INFO] Update file found: %UPDATE_FILE% >> "%LOG_FILE%"
echo [INFO] Target app.asar: %APP_ASAR% >> "%LOG_FILE%"
echo [INFO] Application exe: %EXE_PATH% >> "%LOG_FILE%"
echo [INFO] Waiting for application to close... >> "%LOG_FILE%"
REM 获取应用进程名
for /f "tokens=*" %%a in ("%EXE_PATH%") do set EXE_NAME=%%~nxa
echo [INFO] Waiting for %EXE_NAME% to close... >> "%LOG_FILE%"
REM 等待应用进程完全关闭最多等待10秒
set COUNT=0
:wait_loop
tasklist /FI "IMAGENAME eq %EXE_NAME%" 2>nul | find /I "%EXE_NAME%" >nul
if errorlevel 1 goto process_closed
set /a COUNT+=1
if %COUNT% GEQ 20 (
echo [WARN] Application still running after 10 seconds >> "%LOG_FILE%"
goto process_closed
)
timeout /t 1 /nobreak >nul
goto wait_loop
:process_closed
echo [INFO] Application process closed >> "%LOG_FILE%"
timeout /t 1 /nobreak >nul
echo [INFO] Backing up current app.asar... >> "%LOG_FILE%"
if exist "%APP_ASAR%.backup" (
del /f /q "%APP_ASAR%.backup" >nul 2>&1
)
if exist "%APP_ASAR%" (
move /y "%APP_ASAR%" "%APP_ASAR%.backup" >nul 2>&1
if errorlevel 1 (
echo [WARN] First move attempt failed, retrying... >> "%LOG_FILE%"
timeout /t 2 /nobreak >nul
move /y "%APP_ASAR%" "%APP_ASAR%.backup" >nul 2>&1
if errorlevel 1 (
echo [ERROR] Failed to backup app.asar, file is locked >> "%LOG_FILE%"
goto :start_app
)
)
echo [SUCCESS] Backup completed >> "%LOG_FILE%"
)
echo [INFO] Applying update... >> "%LOG_FILE%"
move /y "%UPDATE_FILE%" "%APP_ASAR%" >nul 2>&1
if errorlevel 1 (
echo [ERROR] Failed to apply update >> "%LOG_FILE%"
if exist "%APP_ASAR%.backup" (
echo [INFO] Restoring backup... >> "%LOG_FILE%"
move /y "%APP_ASAR%.backup" "%APP_ASAR%" >nul 2>&1
)
goto :start_app
)
echo [SUCCESS] Update applied successfully! >> "%LOG_FILE%"
if exist "%UPDATE_FILE%" (
del /f /q "%UPDATE_FILE%" >nul 2>&1
)
:start_app
echo [INFO] Restarting application... >> "%LOG_FILE%"
echo ======================================== >> "%LOG_FILE%"
start "" "%EXE_PATH%"
exit /b 0