Simplify build: use pyinstaller directly, add better error handling

This commit is contained in:
Quality App Developer
2026-02-05 11:32:21 +02:00
parent 82949fb9bf
commit 8301fc8ef4
2 changed files with 28 additions and 27 deletions

View File

@@ -24,22 +24,12 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip setuptools wheel
pip install -r requirements_windows.txt pip install -r requirements_windows.txt
- name: Verify build setup
run: |
echo "Python version:"
python --version
echo "Installed packages:"
pip list
echo "Current directory:"
cd %CD%
echo "Files in directory:"
dir /B
- name: Build executable with PyInstaller - name: Build executable with PyInstaller
run: python build_exe.py run: |
pyinstaller label_printer_gui.py --onefile --windowed --name=LabelPrinter --distpath=./dist --buildpath=./build --hidden-import=kivy --hidden-import=kivy.core.window --hidden-import=kivy.core.text --hidden-import=kivy.core.image --hidden-import=kivy.uix.boxlayout --hidden-import=kivy.uix.gridlayout --hidden-import=kivy.uix.label --hidden-import=kivy.uix.textinput --hidden-import=kivy.uix.button --hidden-import=kivy.uix.spinner --hidden-import=kivy.uix.scrollview --hidden-import=kivy.uix.popup --hidden-import=kivy.clock --hidden-import=kivy.graphics --hidden-import=PIL --hidden-import=barcode --hidden-import=reportlab --hidden-import=print_label --hidden-import=print_label_pdf
- name: Upload Windows executable as artifact - name: Upload Windows executable as artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4

View File

@@ -7,14 +7,14 @@ If run on Linux/macOS, it will create a Linux/macOS binary that won't work on Wi
To build for Windows: To build for Windows:
1. Copy this project to a Windows machine 1. Copy this project to a Windows machine
2. Install dependencies: pip install -r requirements_gui.txt 2. Install dependencies: pip install -r requirements_windows.txt
3. Run this script: python build_exe.py 3. Run this script: python build_exe.py
4. The Windows .exe will be created in the dist/ folder 4. The Windows .exe will be created in the dist/ folder
""" """
import os import os
import sys import sys
from PyInstaller import __main__ as pyi_main import subprocess
# Get the current directory # Get the current directory
script_dir = os.path.dirname(os.path.abspath(__file__)) script_dir = os.path.dirname(os.path.abspath(__file__))
@@ -58,15 +58,26 @@ if __name__ == '__main__':
# Change to script directory # Change to script directory
os.chdir(script_dir) os.chdir(script_dir)
# Run PyInstaller # Run PyInstaller directly with subprocess for better error reporting
pyi_main.run(args) try:
result = subprocess.run(['pyinstaller'] + args, check=True)
print("\n" + "=" * 60)
print("Build Complete!") print("\n" + "=" * 60)
print("=" * 60) print("Build Complete!")
print("\nExecutable location: ./dist/LabelPrinter.exe") print("=" * 60)
print("\nYou can now:") print("\nExecutable location: ./dist/LabelPrinter.exe")
print("1. Double-click LabelPrinter.exe to run") print("\nYou can now:")
print("2. Share the exe with others") print("1. Double-click LabelPrinter.exe to run")
print("3. Create a shortcut on desktop") print("2. Share the exe with others")
print("\nNote: First run may take a moment as Kivy initializes") print("3. Create a shortcut on desktop")
print("\nNote: First run may take a moment as Kivy initializes")
except subprocess.CalledProcessError as e:
print("\n" + "=" * 60)
print("Build Failed!")
print("=" * 60)
print(f"\nError code: {e.returncode}")
print("\nPlease check the error messages above for details.")
sys.exit(1)
except Exception as e:
print(f"\nFatal error: {e}")
sys.exit(1)