2026-02-12 10:14:10 +08:00
|
|
|
@echo off
|
2026-02-12 10:29:01 +08:00
|
|
|
REM ================================
|
2026-02-12 10:31:01 +08:00
|
|
|
REM CutThenThink Windows Build Script
|
2026-02-12 10:29:01 +08:00
|
|
|
REM ================================
|
2026-02-12 10:31:01 +08:00
|
|
|
|
2026-02-12 10:32:31 +08:00
|
|
|
REM Change to project directory
|
2026-02-12 10:29:01 +08:00
|
|
|
cd /d "%~dp0"
|
2026-02-12 10:31:01 +08:00
|
|
|
|
2026-02-12 10:38:44 +08:00
|
|
|
REM Check Python and install PyInstaller if needed
|
|
|
|
|
echo Checking Python...
|
2026-02-12 10:32:31 +08:00
|
|
|
python --version 2>nul
|
|
|
|
|
if errorlevel 1 (
|
2026-02-12 10:38:44 +08:00
|
|
|
echo Python not found. Please install Python 3.8+
|
2026-02-12 10:32:31 +08:00
|
|
|
pause
|
|
|
|
|
exit /b 1
|
|
|
|
|
)
|
|
|
|
|
|
2026-02-12 10:38:44 +08:00
|
|
|
echo.
|
|
|
|
|
python -m pip list 2>nul 2>&1 | findstr /I "PyInstaller" /I "install"
|
2026-02-12 10:32:31 +08:00
|
|
|
if errorlevel 1 (
|
|
|
|
|
echo PyInstaller not found, installing now...
|
|
|
|
|
python -m pip install --user pyinstaller
|
|
|
|
|
echo.
|
2026-02-12 10:38:44 +08:00
|
|
|
echo NOTE: This may take a minute...
|
2026-02-12 10:32:31 +08:00
|
|
|
)
|
2026-02-12 10:38:44 +08:00
|
|
|
python -m pip list 2>nul 2>&1 | findstr /I "PyInstaller" /I "installed"
|
2026-02-12 10:32:31 +08:00
|
|
|
echo.
|
2026-02-12 10:38:44 +08:00
|
|
|
echo If PyInstaller is installed, will proceed with build.
|
2026-02-12 10:32:31 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
REM Check PyQt6 availability
|
2026-02-12 10:38:44 +08:00
|
|
|
python -c "import PyQt6.QtCore" 2>nul 2>&1
|
2026-02-12 10:32:31 +08:00
|
|
|
if errorlevel 1 (
|
|
|
|
|
echo.
|
2026-02-12 10:38:44 +08:00
|
|
|
echo PyQt6 Core not available, will install now...
|
|
|
|
|
python -m pip install --user pyqt6-core
|
2026-02-12 10:32:31 +08:00
|
|
|
echo.
|
|
|
|
|
)
|
2026-02-12 10:38:44 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
REM Install all required dependencies
|
|
|
|
|
echo Installing all dependencies...
|
|
|
|
|
python -m pip install --user pyqt6-gui 2>nul
|
2026-02-12 10:32:31 +08:00
|
|
|
python -m pip install --user sqlalchemy 2>nul
|
|
|
|
|
python -m pip install --user pyyaml 2>nul
|
|
|
|
|
python -m pip install --user requests 2>nul
|
|
|
|
|
python -m pip install --user pillow 2>nul
|
|
|
|
|
python -m pip install --user pyperclip 2>nul
|
|
|
|
|
|
|
|
|
|
echo.
|
|
|
|
|
echo 3/5. Building lightweight version...
|
2026-02-12 10:29:01 +08:00
|
|
|
python -m PyInstaller --noconfirm --name "CutThenThink" --windowed --onefile --add-data "src:src" --hidden-import=PyQt6.QtCore --hidden-import=PyQt6.QtGui --hidden-import=PyQt6.QtWidgets --hidden-import=sqlalchemy src/main.py
|
2026-02-12 10:14:10 +08:00
|
|
|
if errorlevel 1 (
|
2026-02-12 10:31:01 +08:00
|
|
|
echo Build Failed!
|
2026-02-12 10:14:10 +08:00
|
|
|
pause
|
|
|
|
|
exit /b 1
|
|
|
|
|
)
|
2026-02-12 10:31:01 +08:00
|
|
|
|
2026-02-12 10:14:10 +08:00
|
|
|
echo ================================
|
2026-02-12 10:31:01 +08:00
|
|
|
echo Build Complete!
|
|
|
|
|
echo Executable: dist\CutThenThink.exe
|
|
|
|
|
echo File size (without PaddleOCR): ~30-50 MB
|
|
|
|
|
echo ================================
|
|
|
|
|
echo.
|
2026-02-12 10:32:31 +08:00
|
|
|
echo On first run, app will auto-download and install PaddleOCR.
|
2026-02-12 10:14:10 +08:00
|
|
|
echo.
|
|
|
|
|
pause
|