Fix: Version und Drittanbieter-Lizenzen im PyInstaller-Build anzeigen (v1.2.6)

pyproject.toml und THIRD_PARTY_LICENSES.txt werden nun ins PyInstaller-Bundle
eingebunden. Pfadauflösung nutzt sys._MEIPASS im Bundle-Kontext.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-28 19:32:03 +01:00
parent 09312dbd66
commit d7282082f4
7 changed files with 59 additions and 48 deletions
+43 -40
View File
@@ -4,46 +4,49 @@ PyInstaller Konfiguration für DocuMentor
Erstellt eine eigenständige Windows-Executable ohne Python-Installation
"""
import sys
from pathlib import Path
from PyInstaller.utils.hooks import collect_all
block_cipher = None
# Projektpfad
project_root = Path(SPECPATH)
src_path = project_root / 'src'
# connectorx komplett sammeln (Python-Code, native .pyd und Metadaten)
# PyInstaller erkennt connectorx nicht automatisch, da es zur Laufzeit
# von polars per importlib.import_module() geladen wird
cx_datas, cx_binaries, cx_hiddenimports = collect_all('connectorx')
# Alle UI-Dateien sammeln
ui_files = []
for ui_file in (src_path / 'ui').glob('*.ui'):
ui_files.append((str(ui_file), 'ui'))
# Ressource-Dateien (SQL, CSV) einbinden
res_files = []
for res_file in (src_path / 'res').glob('*'):
res_files.append((str(res_file), 'res'))
a = Analysis(
[str(src_path / 'main.py')],
pathex=[str(src_path)],
binaries=cx_binaries,
datas=ui_files + res_files + cx_datas,
hiddenimports=[
'PySide6.QtCore',
'PySide6.QtGui',
'PySide6.QtWidgets',
'pydantic',
'pydantic_settings',
'pydantic_yaml',
'polars',
'pyarrow',
] + cx_hiddenimports,
import sys
from pathlib import Path
from PyInstaller.utils.hooks import collect_all
block_cipher = None
# Projektpfad
project_root = Path(SPECPATH)
src_path = project_root / 'src'
# connectorx komplett sammeln (Python-Code, native .pyd und Metadaten)
# PyInstaller erkennt connectorx nicht automatisch, da es zur Laufzeit
# von polars per importlib.import_module() geladen wird
cx_datas, cx_binaries, cx_hiddenimports = collect_all('connectorx')
# Alle UI-Dateien sammeln
ui_files = []
for ui_file in (src_path / 'ui').glob('*.ui'):
ui_files.append((str(ui_file), 'ui'))
# Ressource-Dateien (SQL, CSV) einbinden
res_files = []
for res_file in (src_path / 'res').glob('*'):
res_files.append((str(res_file), 'res'))
a = Analysis(
[str(src_path / 'main.py')],
pathex=[str(src_path)],
binaries=cx_binaries,
datas=ui_files + res_files + cx_datas + [
(str(project_root / 'pyproject.toml'), '.'),
(str(project_root / 'THIRD_PARTY_LICENSES.txt'), '.'),
],
hiddenimports=[
'PySide6.QtCore',
'PySide6.QtGui',
'PySide6.QtWidgets',
'pydantic',
'pydantic_settings',
'pydantic_yaml',
'polars',
'pyarrow',
] + cx_hiddenimports,
hookspath=[],
hooksconfig={},
runtime_hooks=[],