Add build.bat
This commit is contained in:
parent
4264c9e574
commit
c44aaaebfa
119
build.bat
Normal file
119
build.bat
Normal file
@ -0,0 +1,119 @@
|
||||
@echo off
|
||||
setlocal
|
||||
cd /d "%~dp0"
|
||||
|
||||
REM Note, this script uses XP-friendly settings.
|
||||
REM Needs curl: https://curl.se/windows/ - Extract in your %path% or here.
|
||||
REM
|
||||
REM If something doesn't work, delete the build folder.
|
||||
|
||||
REM Check prerequisites
|
||||
echo -- Checking prerequisites:
|
||||
echo|set /p="curl: "
|
||||
where curl
|
||||
if "%errorlevel%" == "1" goto exit
|
||||
echo.
|
||||
|
||||
REM Universal build settings
|
||||
set "build-home=%cd%"
|
||||
set "build-folder=%cd%\build"
|
||||
set "build-pip=https://bootstrap.pypa.io/pip/3.4/get-pip.py"
|
||||
if not exist "%build-folder%" mkdir "%build-folder%"
|
||||
|
||||
REM Check if OS is 32-bit or 64-bit
|
||||
set 64bit=0
|
||||
if "%PROCESSOR_ARCHITECTURE%" == "AMD64" set 64bit=1
|
||||
if "%PROCESSOR_ARCHITEW6432%" == "AMD64" set 64bit=1
|
||||
|
||||
REM Build 32-bit version
|
||||
echo -- Building (32-bit):
|
||||
set "build-arch=x86"
|
||||
set "build-python=https://www.python.org/ftp/python/3.4.4/python-3.4.4.msi"
|
||||
set "build-modules="pefile==2019.4.18" "PyInstaller==3.4" "pypiwin32==219" "pillow" "QtPy" "PySide""
|
||||
set "build-output=%build-folder%\%build-arch%"
|
||||
call :prebuild
|
||||
call :build
|
||||
echo.
|
||||
|
||||
REM Build 64-bit version
|
||||
if "%64bit%" == "0" goto exit
|
||||
echo -- Building (64-bit):
|
||||
set "build-arch=AMD64"
|
||||
set "build-python=https://www.python.org/ftp/python/3.4.4/python-3.4.4.amd64.msi"
|
||||
set "build-modules="pefile==2019.4.18" "PyInstaller==3.4" "pypiwin32==219" "pillow" "QtPy""
|
||||
set "build-output=%build-folder%\%build-arch%"
|
||||
call :prebuild
|
||||
call :downloadFile "https://download.qt.io/official_releases/pyside/PySide-1.2.4-cp34-none-win_amd64.whl" "%build-output%\PySide-1.2.4-cp34-none-win_amd64.whl"
|
||||
call :python -m pip install "%build-output%\PySide-1.2.4-cp34-none-win_amd64.whl"
|
||||
call :build
|
||||
|
||||
REM All done
|
||||
echo.
|
||||
goto exit
|
||||
|
||||
REM Ready prerequisites and folder structure
|
||||
:prebuild
|
||||
setlocal
|
||||
set "build-downloadpython=1"
|
||||
set "path=%build-output%\python;%path%"
|
||||
if not exist "%build-output%" mkdir "%build-output%"
|
||||
if exist "%build-output%\python\python.exe" (
|
||||
set build-downloadpython=0
|
||||
) else (
|
||||
set build-downloadpython=1
|
||||
)
|
||||
|
||||
if "%build-downloadpython%" == "1" (
|
||||
echo Downloading Python...
|
||||
if exist "%build-output%\python" rmdir /s /q "%build-output%\python"
|
||||
call :downloadFile "%build-python%" "%build-output%\python.msi"
|
||||
call :downloadFile "%build-pip%" "%build-output%\get-pip.py"
|
||||
msiexec /a "%build-output%\python.msi" /qb targetdir="%build-output%\python"
|
||||
|
||||
echo.
|
||||
echo Installing pip...
|
||||
call :python "%build-output%\get-pip.py"
|
||||
)
|
||||
|
||||
echo Installing prerequisites...
|
||||
call :python -m pip install %build-modules%
|
||||
exit /b
|
||||
|
||||
REM Compile executable
|
||||
:build
|
||||
setlocal
|
||||
if not exist "%build-output%\pyinstaller" mkdir "%build-output%\pyinstaller"
|
||||
cd /d "%build-output%\pyinstaller"
|
||||
call :python -m PyInstaller "%build-home%\batchprint.pyw" --onefile --noconsole
|
||||
cd /d "%build-home%"
|
||||
if exist "__pycache__" rmdir /s /q "__pycache__"
|
||||
if exist "%build-output%\dist" rmdir /s /q "%build-output%\dist"
|
||||
|
||||
move "%build-output%\pyinstaller\dist" "%build-output%\dist"
|
||||
mkdir "%build-output%\dist\src"
|
||||
|
||||
copy "LICENSE" "%build-output%\dist"
|
||||
copy "README.md" "%build-output%\dist"
|
||||
xcopy "docs" "%build-output%\dist\docs" /h /i /c /k /e /r /y
|
||||
|
||||
copy "LICENSE" "%build-output%\dist\src"
|
||||
copy "README.md" "%build-output%\dist\src"
|
||||
xcopy "docs" "%build-output%\dist\src\docs" /h /i /c /k /e /r /y
|
||||
copy "batchprint.pyw" "%build-output%\dist\src"
|
||||
exit /b
|
||||
|
||||
REM Download file
|
||||
:downloadFile
|
||||
if exist "%~2" exit /b 0
|
||||
if exist "%~2.tmp" del /f /q "%~2.tmp"
|
||||
curl -L "%~1" --output "%~2.tmp"
|
||||
move "%~2.tmp" "%~2"
|
||||
exit /b %errorlevel%
|
||||
|
||||
REM Run build-specific python
|
||||
:python
|
||||
call "%build-output%\python\python.exe" %*
|
||||
exit /b %errorlevel%
|
||||
|
||||
:exit
|
||||
pause
|
Loading…
Reference in New Issue
Block a user