From 064d379229cf31190898a4f514c9cc9adabff724 Mon Sep 17 00:00:00 2001 From: "vluk@2fi-solutions.com.hk" Date: Thu, 11 Jun 2026 21:46:26 +0800 Subject: [PATCH] Bag3 --- python/__pycache__/Bag3.cpython-313.pyc | Bin 135895 -> 140363 bytes python/installAndExe.txt | 34 ++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/python/__pycache__/Bag3.cpython-313.pyc b/python/__pycache__/Bag3.cpython-313.pyc index a01ec70f11042aa6ae472c4dfdffdae5b2685cbc..7db6056be9a9662477f085a9aeb79f98ffb25511 100644 GIT binary patch delta 27304 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�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 diff --git a/python/installAndExe.txt b/python/installAndExe.txt index 0de431b..fb00b31 100644 --- a/python/installAndExe.txt +++ b/python/installAndExe.txt @@ -1,5 +1,35 @@ +# Bag3 Windows exe build (run all commands in this python/ folder) + py -m pip install --upgrade pyinstaller py -m pip install --upgrade pywin32 -py -m pip install --upgrade Pillow "qrcode[pil]" +py -m pip install --upgrade Pillow "qrcode[pil]" requests + +py -m PyInstaller --noconfirm --clean Bag3.spec + +# Output: dist\Bag3\Bag3.exe plus dist\Bag3\_internal\... +# Copy the ENTIRE dist\Bag3\ folder to the client PC (not only Bag3.exe). + +# --- If the client exe flashes and closes --- + +1) On the client PC, open cmd in the Bag3 folder and run: + Bag3.exe + You should see the error in the console, or open bag3_startup_error.log next to Bag3.exe. + +2) Compare BUILD machines (both should match): + py --version + py -m PyInstaller --version + py -m pip show pyinstaller pywin32 Pillow qrcode requests + + A broken build is often caused by: + - Different Python major version (e.g. 3.13 vs 3.11) + - Incomplete tkinter on that Python (Store Python / partial install) + - Old PyInstaller missing Tcl/Tk files in the bundle + +3) Rebuild on the machine that works, or reinstall Python from python.org (64-bit) + and reinstall deps above, then rebuild. + +4) Bag3.spec disables UPX (upx=False) for stability; do not re-enable unless you test on the client. + +5) Client needs 64-bit Windows and Microsoft VC++ Redistributable (same as your Python installer). -py -m PyInstaller --noconfirm --clean Bag3.spec \ No newline at end of file +6) Antivirus may quarantine files under _internal\ — whitelist the Bag3 folder if the log mentions missing DLL.