Files
xsl-validator/docs/windows_distribution.md
T
info bb7cad9204 Build: Vollständige Windows-Distribution-Infrastruktur
Implementiert ein professionelles Build-System für Windows-Benutzer ohne Python-Installation:

PyInstaller-Integration:
- DocuMentor.spec mit automatischer Icon/Version-Einbindung
- Unterstützung für alle PySide6-UI-Dateien und Dependencies
- UPX-Kompression für kleinere Executable-Größe

Icon-System:
- create_icon.py generiert Standard-Icon oder konvertiert PNG zu ICO
- Multi-Size ICO (16x16 bis 256x256) für alle Windows-Kontexte
- Automatische Integration in Build-Prozess
- Prompts für Bild-KIs (Gemini, DALL-E, etc.)

Versionsinformationen:
- create_version_info.py liest Version aus pyproject.toml
- Windows-Datei-Eigenschaften (Rechtsklick → Details)
- Automatische Generierung bei jedem Build

Build-Automatisierung:
- build_windows.py orchestriert gesamten Build-Prozess
- Erstellt Icon und Versionsinformationen automatisch
- Generiert ZIP-Archiv für Distribution
- Cleanup alter Builds

Inno Setup-Integration:
- installer.iss für professionelle Setup.exe
- GUID-Generator (generate_guid.py)
- Desktop-Verknüpfungen und Start-Menü-Integration

Dokumentation:
- BUILD.md - Schnellstart-Anleitung
- docs/windows_distribution.md - Detaillierte Distribution-Dokumentation
- docs/icon_and_version_info.md - Icon- und Versions-System
- resources/icon_prompt.md - KI-Prompts für Icon-Generierung

Dependencies:
- pyinstaller>=6.0.0 für Executable-Erstellung
- pillow>=10.0.0 für Icon-Generierung

Externe Abhängigkeiten (Java, FOP, Saxon, diff-pdf) bleiben separat installierbar.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-04 20:37:30 +01:00

6.1 KiB

Windows Distribution Guide für DocuMentor

Überblick

Dieses Dokument beschreibt, wie DocuMentor für Windows-Benutzer ohne Python-Installation verpackt wird.

Voraussetzungen

Auf dem Entwicklungssystem

# Dependencies installieren (inkl. PyInstaller)
uv sync --all-groups

Für Setup.exe (optional)

Build-Prozess

Option 1: Einfacher Build (ZIP-Distribution)

# 1. PyInstaller installieren
uv sync --all-groups

# 2. Build ausführen
uv run python build_windows.py

Dies erstellt:

  • dist/DocuMentor/DocuMentor.exe - Eigenständige Executable
  • dist/DocuMentor-YYYYMMDD-Windows.zip - Portable ZIP-Archiv

Option 2: Professionelle Setup.exe mit Inno Setup

# 1. PyInstaller Build
uv run python build_windows.py

# 2. Inno Setup Compiler ausführen
iscc installer.iss

Dies erstellt:

  • dist/installer/DocuMentor-Setup-0.1.0.exe - Professioneller Installer

Option 3: MSI-Installer mit WiX

# TODO: WiX-Konfiguration noch zu erstellen

Manuelle Schritte

1. PyInstaller direkt verwenden

# Cleanup
rm -rf build/ dist/

# Build
uv run pyinstaller --clean DocuMentor.spec

# Testen
dist/DocuMentor/DocuMentor.exe

2. Anpassungen vornehmen

Icon hinzufügen:

  1. Icon-Datei (.ico) im Projekt speichern, z.B. resources/icon.ico
  2. In DocuMentor.spec anpassen:
    icon='resources/icon.ico'
    

Versionsinformationen: In DocuMentor.spec erweitern:

exe = EXE(
    # ...
    version='version_info.txt',  # Windows-Versionsinformationen
)

PyInstaller .spec Konfiguration

Die Datei DocuMentor.spec enthält:

  • datas: UI-Dateien (.ui) werden mitgepackt
  • hiddenimports: Alle notwendigen PySide6/Polars-Module
  • console=False: GUI-Anwendung ohne Konsole
  • upx=True: Kompression der Binaries

Wichtige Einstellungen

# Ein-Datei-Build (alles in einer .exe)
exe = EXE(
    pyz,
    a.scripts,
    a.binaries,      # Diese Zeilen
    a.zipfiles,      # auskommentieren
    a.datas,         # für One-File
    # ...
    onefile=True,    # Hinzufügen
)

Achtung: One-File-Build ist langsamer beim Start, da alles temporär entpackt werden muss.

Distribution

ZIP-Archive

# Automatisch durch build_windows.py erstellt
dist/DocuMentor-YYYYMMDD-Windows.zip

Vorteile:

  • Einfach, portable
  • Keine Installation nötig
  • Kann auf USB-Stick verwendet werden

Nachteile:

  • Keine Deinstallationsroutine
  • Keine Verknüpfungen
  • Keine Registry-Einträge

Setup.exe mit Inno Setup

Vorteile:

  • Professionell
  • Deinstallation integriert
  • Start-Menü und Desktop-Icons
  • Update-Mechanismus möglich

Nachteile:

  • Benötigt Administrator-Rechte (optional)
  • Komplexere Konfiguration

MSI-Installer

Vorteile:

  • Windows-Standard
  • Gruppen-Richtlinien-fähig
  • Silent Installation möglich

Nachteile:

  • Komplexe Erstellung
  • Benötigt WiX Toolset

Externe Abhängigkeiten

DocuMentor benötigt diese Tools (NICHT im Installer enthalten):

  1. Java Runtime Environment (JRE) 11+

  2. Apache FOP

  3. Saxon XSLT Prozessor

  4. diff-pdf

Benutzer-Anleitung

Nach der Installation:

  1. DocuMentor starten
  2. Beim ersten Start öffnet sich automatisch die Einstellungen
  3. Pfade zu Java, Saxon, FOP und diff-pdf konfigurieren
  4. Projekt-Verzeichnis wählen oder neues Projekt erstellen

Testing

Lokales Testing (Linux/WSL)

# Build für Windows erstellen
uv run python build_windows.py

# Executable mit Wine testen (falls verfügbar)
wine dist/DocuMentor/DocuMentor.exe

Testing auf Windows

  1. ZIP auf Windows-System kopieren
  2. Entpacken
  3. DocuMentor.exe ausführen
  4. Alle Features testen:
    • Projekt öffnen/erstellen
    • Tree-Navigation
    • PDF-Generierung
    • Einstellungen

Troubleshooting

Problem: "Module not found" Fehler

Lösung: Hidden imports in DocuMentor.spec ergänzen:

hiddenimports=[
    # ... existing
    'missing_module',
]

Problem: UI-Dateien nicht gefunden

Lösung: Prüfen ob datas korrekt konfiguriert:

datas=[
    ('src/ui/*.ui', 'ui'),
]

Problem: Executable zu groß

Lösungen:

  1. UPX-Kompression aktivieren (bereits aktiv)
  2. Excludes hinzufügen für ungenutzte Module:
    excludes=['tkinter', 'matplotlib', 'test', 'unittest']
    
  3. One-File-Build verwenden (langsamer Start)

Problem: Antivirus blockiert

Lösung:

  • Code-Signing-Zertifikat verwenden
  • Bei Microsoft einreichen für SmartScreen
  • README mit Hinweis erweitern

Automatisierung mit CI/CD

GitHub Actions Beispiel

name: Build Windows Release

on:
  push:
    tags:
      - 'v*'

jobs:
  build:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v3

      - name: Install uv
        uses: astral-sh/setup-uv@v1

      - name: Build
        run: uv run python build_windows.py

      - name: Create Release
        uses: softprops/action-gh-release@v1
        with:
          files: dist/*.zip

Versionierung

Version in folgenden Dateien aktualisieren:

  1. pyproject.toml - version = "X.Y.Z"
  2. installer.iss - #define MyAppVersion "X.Y.Z"
  3. Optional: src/version.py erstellen

Lizenz und Rechtliches

  • Alle Python-Dependencies sind in der Distribution enthalten
  • PySide6 (LGPL): Dynamische Verlinkung ist OK
  • Polars (MIT): Unproblematisch
  • Pydantic (MIT): Unproblematisch

Externe Tools (Saxon, FOP) haben eigene Lizenzen und müssen separat installiert werden.