@echo off setlocal enabledelayedexpansion set "ROOT=%~dp0..\.." for %%I in ("%ROOT%") do set "ROOT=%%~fI" set "PYTHON=%ROOT%\.venv\Scripts\python.exe" if not exist "%PYTHON%" ( echo Missing .venv\Scripts\python.exe exit /b 1 ) "%PYTHON%" -m pip show rapidocr-onnxruntime >nul 2>nul set "HAS_RAPIDOCR=%ERRORLEVEL%" "%PYTHON%" -m pip show onnxruntime >nul 2>nul set "HAS_ONNXRUNTIME=%ERRORLEVEL%" if not "%HAS_RAPIDOCR%"=="0" goto install_ocr if not "%HAS_ONNXRUNTIME%"=="0" goto install_ocr goto after_install :install_ocr "%PYTHON%" -m pip install -r "%ROOT%\requirements.txt" if errorlevel 1 exit /b 1 :after_install "%PYTHON%" -m PyInstaller --version >nul if errorlevel 1 exit /b 1 set "RESOURCES=%ROOT%\frontend\src-tauri\resources" set "BACKEND_OUT=%RESOURCES%\backend" set "BUILD_ROOT=%ROOT%\.build\pyinstaller" set "STALE_ROOT=%ROOT%\.build\stale-resources" if exist "%BACKEND_OUT%" ( rmdir /s /q "%BACKEND_OUT%" 2>nul if exist "%BACKEND_OUT%" ( if not exist "%STALE_ROOT%" mkdir "%STALE_ROOT%" set "STALE_NAME=backend-%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%" set "STALE_NAME=!STALE_NAME: =0!" move "%BACKEND_OUT%" "%STALE_ROOT%\!STALE_NAME!" >nul ) ) if not exist "%RESOURCES%" mkdir "%RESOURCES%" "%PYTHON%" -m PyInstaller --noconfirm --clean --onedir --name backend --distpath "%RESOURCES%" --workpath "%BUILD_ROOT%\work" --specpath "%BUILD_ROOT%\spec" --paths "%ROOT%" --collect-all rapidocr_onnxruntime --collect-all onnxruntime --copy-metadata rapidocr-onnxruntime --copy-metadata onnxruntime --add-data "%ROOT%\app;app" "%ROOT%\backend_main.py" if errorlevel 1 exit /b 1 exit /b 0