You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.8 KiB
100 lines
2.8 KiB
@echo off
|
|
chcp 65001 >nul
|
|
setlocal EnableDelayedExpansion
|
|
|
|
set "PY_EXE="
|
|
set "PY_ARGS="
|
|
set "PIP_INSTALL_ARGS=--disable-pip-version-check --default-timeout 180 --retries 10 --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.tuna.tsinghua.edu.cn --trusted-host mirrors.aliyun.com"
|
|
|
|
where py >nul 2>nul
|
|
if not errorlevel 1 (
|
|
py -3 -c "import sys;sys.exit(0 if sys.version_info[0]>=3 else 1)" >nul 2>nul
|
|
if not errorlevel 1 (
|
|
set "PY_EXE=py"
|
|
set "PY_ARGS=-3"
|
|
)
|
|
)
|
|
|
|
if not defined PY_EXE (
|
|
where python3 >nul 2>nul
|
|
if not errorlevel 1 (
|
|
python3 -c "import sys;sys.exit(0 if sys.version_info[0]>=3 else 1)" >nul 2>nul
|
|
if not errorlevel 1 (
|
|
set "PY_EXE=python3"
|
|
set "PY_ARGS="
|
|
)
|
|
)
|
|
)
|
|
|
|
if not defined PY_EXE (
|
|
python -c "import sys;sys.exit(0 if sys.version_info[0]>=3 else 1)" >nul 2>nul
|
|
if not errorlevel 1 (
|
|
set "PY_EXE=python"
|
|
set "PY_ARGS="
|
|
)
|
|
)
|
|
|
|
if not defined PY_EXE (
|
|
for %%D in ("%LocalAppData%\Programs\Python\Python312\python.exe" "%LocalAppData%\Programs\Python\Python311\python.exe" "%LocalAppData%\Programs\Python\Python310\python.exe" "C:\Program Files\Python312\python.exe" "C:\Program Files\Python311\python.exe" "C:\Program Files\Python310\python.exe") do (
|
|
if exist %%~D (
|
|
%%~D -c "import sys;sys.exit(0 if sys.version_info[0]>=3 else 1)" >nul 2>nul
|
|
if not errorlevel 1 (
|
|
set "PY_EXE=%%~D"
|
|
set "PY_ARGS="
|
|
goto :py_found
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
:py_found
|
|
if not defined PY_EXE (
|
|
echo Python3 interpreter not found.
|
|
echo Current python version:
|
|
python --version
|
|
echo Please install Python 3.10+ and retry.
|
|
echo Download URL https://www.python.org/downloads/windows/
|
|
exit /b 1
|
|
)
|
|
|
|
echo Using interpreter:
|
|
call "%PY_EXE%" %PY_ARGS% --version
|
|
|
|
echo [1/3] Install dependencies...
|
|
call :install_requirements
|
|
if errorlevel 1 (
|
|
echo Dependency install failed after trying all indexes
|
|
exit /b 1
|
|
)
|
|
|
|
echo [2/3] Build EXE...
|
|
if exist "dist\QMSFileCollector.exe" (
|
|
del /f /q "dist\QMSFileCollector.exe" >nul 2>nul
|
|
if exist "dist\QMSFileCollector.exe" (
|
|
echo Existing dist\QMSFileCollector.exe is locked.
|
|
echo Please close running QMSFileCollector process and retry.
|
|
exit /b 1
|
|
)
|
|
)
|
|
call "%PY_EXE%" %PY_ARGS% -m PyInstaller --noconfirm --clean --onefile --windowed --name QMSFileCollector client_file_collector.py
|
|
if errorlevel 1 (
|
|
echo EXE build failed
|
|
exit /b 1
|
|
)
|
|
|
|
echo [3/3] Build completed
|
|
echo Output: dist\QMSFileCollector.exe
|
|
endlocal
|
|
exit /b 0
|
|
|
|
:install_requirements
|
|
for %%I in (https://pypi.tuna.tsinghua.edu.cn/simple https://mirrors.aliyun.com/pypi/simple/ https://pypi.org/simple) do (
|
|
echo Trying pip index: %%I
|
|
call "%PY_EXE%" %PY_ARGS% -m pip install %PIP_INSTALL_ARGS% -i %%I -r requirements.txt
|
|
if not errorlevel 1 (
|
|
echo Dependencies installed from %%I
|
|
exit /b 0
|
|
)
|
|
echo Install failed from %%I, try next index...
|
|
)
|
|
exit /b 1
|