@ECHO OFF :: -------------------------------------------------------------------------------------------------------------------------------------- :: project: GarageCalc1 Window-Exe Generator :: summary: create a GarageCalc1-executable for Windows (version with no-console-windows as well as version with console windows for traces) :: file: pyinstaller.cmd :: date: version author :: 2021-06-27 1 paul salajean :: -------------------------------------------------------------------------------------------------------------------------------------- SET version="v0.1" SET release_dir="D:\Temp\Prog\ownCloud\profp@uberspace\transfer" SET prev_dir=%cd% SET reinstall_venv="true" SET do_zip="false" CD .. ECHO Creating GarageCalc1 Windows.exe-version in folder %cd%\dist PAUSE REM pyinstaller --noconfirm --log-level=ERROR ^ REM --onedir --nowindow ^ REM --add-data="README;." ^ REM --add-data="image1.png;img" ^ REM --add-data="img;doc;ui" ^ REM --add-data="LICENSE.txt;changelog.md;GarageCalc1.bat" ^ REM --add-binary="libfoo.so;lib" ^ REM --hidden-import=secret1 ^ REM --hidden-import=secret2 ^ REM --icon=.\img\GarageCalc1.ico ^ REM --debug=imports ^ REM --key=N0T1me40pp0ssum5 REM --paths=.\src ^ REM GarageCalc1.spec REM The key-string is a string of 16 characters which is used to encrypt each file of Python byte-code before it is stored in the archive inside the executable file. REM This feature uses the "tinyaes" module internally for the encryption. REM ::one dir: ECHO ...Running... RMDIR /S /Q .\dist>nul RMDIR /S /Q .\build>nul ::Use Virtual env IF %reinstall_venv%=="false" GOTO PYINSTALL ECHO Installing virtual env as ".\env2"... RMDIR /S /Q .\env2>NUL python -m venv env2 CALL .\env2\Scripts\activate.bat ECHO Installing necessary python packages... python -m pip install --upgrade pip python -m pip install -r requirements.txt :PYINSTALL IF %reinstall_venv%=="false" CALL .\env2\Scripts\activate.bat ECHO Running "pyinstaller"... REM pyinstaller .\main.py --name=GarageCalc1 --noconfirm --console --clean --onedir --log-level=ERROR --hidden-import=PySide2.QtXml --icon=.\img\GarageCalc1.ico --add-data="LICENSE;." --add-data="README.md;." --add-data="changelog.md;." --add-data="*.ui;." --add-data="img;.\img" pyinstaller .\src\main.py --name=GarageCalc1 --noconfirm --windowed --clean --onefile --log-level=ERROR --hidden-import=PySide2.QtXml ^ --icon=.\img\icons8-garage-32.ico ^ --add-data="LICENSE.txt;." ^ --add-data="README.md;." ^ --add-data="changelog.md;." ^ --add-data="requirements.txt;." ^ --add-data=".\src\*.ui;." ^ --add-data="img;.\img" ::MOVE .\dist\GarageCalc1\*.md .\dist\ ::MOVE .\dist\GarageCalc1\LICENSE .\dist\ ::clean-up img-folder ::MOVE .\dist\GarageCalc1\img .\dist\img>NUL ::Remove temp dir and files DEL /Q *.spec>NUL RMDIR /S /Q .\build ::Create self extracting archive IF %do_zip%=="false" GOTO END ::-mx0 = Don't compress at all - just copy the contents to archive. ::-mx1 = Consumes least time, but compression is low. ::-mx3 = Better than -mx1. ::-mx5 = This is default (compression is normal). ::-mx7 = Maximum compression. ::-mx9 = Ultra compression. "C:\Program Files\7-zip\7z.exe" a %release_dir%\GarageCalc1_%version%_portable.exe -mx9 -sfx7z.sfx .\dist\* ::Disable Virtual env CALL .\env2\Scripts\deactivate.bat :END CD %prev_dir% ECHO Done. Check %prev_dir%\..\dist IF %do_zip%=="true" ECHO Done. Check %release_dir% PAUSE