diff --git a/app/script/run_qgis.bat b/app/script/run_qgis.bat index 6446550..46c8efa 100644 --- a/app/script/run_qgis.bat +++ b/app/script/run_qgis.bat @@ -1,15 +1,40 @@ @echo off REM ============================================================ REM QGIS 子进程启动脚本(Windows) -REM 需要设置 QGIS_ROOT 环境变量指向 QGIS 安装目录 +REM 需要 QGIS_ROOT 环境变量指向 QGIS 安装目录 +REM 自动检测 qgis-ltr 或 qgis 应用目录 REM ============================================================ -if "%QGIS_ROOT%"=="" ( +setlocal enabledelayedexpansion + +if not defined QGIS_ROOT ( echo [ERROR] QGIS_ROOT 环境变量未设置 exit /b 1 ) -set "QGIS_APP_DIR=%QGIS_ROOT%\apps\qgis-ltr" -set "PYTHONHOME=%QGIS_ROOT%\apps\Python312" +if not exist "%QGIS_ROOT%" ( + echo [ERROR] QGIS_ROOT 目录不存在: %QGIS_ROOT% + exit /b 1 +) + +REM 自动检测 QGIS 应用目录(qgis-ltr 或 qgis) +set "QGIS_APP_DIR=" +if exist "%QGIS_ROOT%\apps\qgis-ltr" ( + set "QGIS_APP_DIR=%QGIS_ROOT%\apps\qgis-ltr" +) else if exist "%QGIS_ROOT%\apps\qgis" ( + set "QGIS_APP_DIR=%QGIS_ROOT%\apps\qgis" +) else ( + echo [ERROR] 未找到 QGIS 应用目录 (apps\qgis-ltr 或 apps\qgis) + exit /b 1 +) + +REM 自动检测 Python 版本目录(Python312 / Python39 / Python3) +set "PYTHONHOME=" +for /d %%d in ("%QGIS_ROOT%\apps\Python3*") do set "PYTHONHOME=%%d" +if "%PYTHONHOME%"=="" ( + echo [ERROR] 未找到 QGIS Python 目录 + exit /b 1 +) + set "PYTHONPATH=%QGIS_APP_DIR%\python" set "QGIS_PREFIX_PATH=%QGIS_APP_DIR%" set "QT_PLUGIN_PATH=%QGIS_APP_DIR%\qtplugins;%QGIS_ROOT%\apps\Qt5\plugins" @@ -20,4 +45,9 @@ set "VSI_CACHE=TRUE" set "VSI_CACHE_SIZE=1000000" set "PATH=%QGIS_APP_DIR%\bin;%QGIS_ROOT%\apps\Qt5\bin;%QGIS_ROOT%\apps\gdal\lib;%PATH%" +if not exist "%PYTHONHOME%\python3.exe" ( + echo [ERROR] QGIS Python 不存在: %PYTHONHOME%\python3.exe + exit /b 1 +) + "%PYTHONHOME%\python3.exe" %*