# DocuMentor Build-Anleitung

## Schnellstart: Windows-Distribution erstellen

### Voraussetzungen

```bash
# Dependencies installieren (inkl. Pillow für Icon-Generierung)
uv sync --all-groups
```

### Build ausführen

```bash
# Automatischer Build (empfohlen)
uv run python build_windows.py
```

Dies erstellt automatisch:
1. **Icon** (falls nicht vorhanden): `resources/icon.ico`
2. **Versionsinformationen**: `version_info.txt`
3. **Executable**: `dist/DocuMentor/DocuMentor.exe` (mit Icon und Versionsinformationen)
4. **ZIP-Archiv**: `dist/DocuMentor-YYYYMMDD-Windows.zip`

### Icon anpassen (optional)

```bash
# Standard-Icon generieren
uv run python create_icon.py

# Oder eigenes PNG-Icon konvertieren
uv run python create_icon.py mein-logo.png
```

### Manuelle Build-Schritte

```bash
# 1. Cleanup
rm -rf build/ dist/

# 2. PyInstaller ausführen
uv run pyinstaller --clean DocuMentor.spec

# 3. Testen
# Auf Windows: dist/DocuMentor/DocuMentor.exe
# Mit Wine: wine dist/DocuMentor/DocuMentor.exe
```

## Setup.exe erstellen (optional)

### Mit Inno Setup

1. **Inno Setup installieren**: https://jrsoftware.org/isdl.php

2. **GUID generieren** für `installer.iss` (nur beim ersten Mal!):
   ```bash
   uv run python generate_guid.py
   ```

   Kopiere die generierte GUID und füge sie in `installer.iss` bei `AppId` ein (Zeile ~22).

   **WICHTIG**: Die GUID nur EINMAL generieren! Bei Updates dieselbe GUID verwenden.

3. **Windows-Build erstellen**:
   ```bash
   uv run python build_windows.py
   ```

   Dies erstellt automatisch das Icon und kopiert es nach `dist/DocuMentor/`.

4. **Installer kompilieren**:
   ```bash
   iscc installer.iss
   ```

5. **Ergebnis**:
   - `dist/installer/DocuMentor-Setup-0.1.0.exe` (mit Icon und Versionsinformationen)

## MSI erstellen (optional)

Mit WiX Toolset - noch zu implementieren.

## Konfiguration anpassen

### Icon anpassen

**Option 1: Standard-Icon generieren**
```bash
uv run python create_icon.py
```

**Option 2: Eigenes Icon aus PNG erstellen**
```bash
uv run python create_icon.py ihr-logo.png
```

**Option 3: Manuell ICO-Datei platzieren**
1. Icon erstellen oder downloaden (`.ico` Format mit mehreren Größen)
2. Als `resources/icon.ico` speichern
3. Beim nächsten Build wird es automatisch verwendet

Das Icon wird automatisch verwendet für:
- Windows-Executable (DocuMentor.exe)
- Inno Setup Installer
- Desktop-Verknüpfungen

**Anforderungen:**
- Multi-Size ICO (16x16 bis 256x256 Pixel)
- Das `create_icon.py` Skript erstellt alle Größen automatisch

### Versionsinformationen

**Automatische Generierung:**

Versionsinformationen werden automatisch aus `pyproject.toml` generiert:

```bash
uv run python create_version_info.py
```

Dies liest die Version aus `pyproject.toml` und erstellt `version_info.txt`.

**Version ändern:**

In `pyproject.toml`:
```toml
version = "0.2.0"
```

Auch aktualisieren in:
- `installer.iss` (Zeile 13: `#define MyAppVersion`)

Dann Versionsinformationen neu generieren:
```bash
uv run python create_version_info.py
```

**Was enthalten die Versionsinformationen:**
- Dateiversion und Produktversion
- Beschreibung und Copyright
- Anwendungsname
- Wird in Windows Explorer angezeigt (Rechtsklick → Eigenschaften → Details)

### Build-Größe reduzieren

In `DocuMentor.spec` Module ausschließen:
```python
excludes=[
    'tkinter',
    'matplotlib',
    'test',
    'unittest',
],
```

### One-File Build (alles in einer .exe)

In `DocuMentor.spec` ändern:
```python
exe = EXE(
    pyz,
    a.scripts,
    a.binaries,      # Uncomment
    a.zipfiles,      # Uncomment
    a.datas,         # Uncomment
    [],              # Comment out
    exclude_binaries=False,  # Ändern
    # ...
    name='DocuMentor',
    onefile=True,    # Hinzufügen
)

# COLLECT auskommentieren oder entfernen
```

**Achtung**: One-File ist langsamer beim Start (3-5 Sekunden).

## Testing

### Lokales Testing

```bash
# Build erstellen
uv run python build_windows.py

# Mit Wine testen (Linux/WSL)
wine dist/DocuMentor/DocuMentor.exe
```

### Testing auf Windows

1. ZIP-Datei auf Windows-System kopieren
2. Entpacken
3. `DocuMentor.exe` starten
4. Features testen:
   - [ ] Programmstart
   - [ ] Einstellungsdialog öffnet beim ersten Start
   - [ ] Projekt öffnen/erstellen
   - [ ] Tree-Navigation
   - [ ] XSL/XML-Dateien hinzufügen
   - [ ] PDF-Generierung (mit konfigurierten Tools)
   - [ ] PDF-Vergleich

## Troubleshooting

### "Module not found" beim Start

**Lösung**: Hidden imports in `DocuMentor.spec` ergänzen:
```python
hiddenimports=[
    'missing.module',
]
```

### Antivirus blockiert die .exe

**Ursache**: Unsigned executables werden oft als verdächtig eingestuft.

**Lösungen**:
1. Code-Signing-Zertifikat kaufen und verwenden
2. Bei Microsoft SmartScreen einreichen
3. Exception in Antivirus eintragen (für Tests)

### Executable ist zu groß (>200 MB)

**Lösungen**:
1. UPX-Kompression ist bereits aktiv
2. Ungenutzte Module excluden (siehe oben)
3. Virtual Environment aufräumen: `uv sync --no-dev`

### UI-Dateien nicht gefunden

**Problem**: `.ui` Dateien werden nicht gefunden.

**Lösung**: In `DocuMentor.spec` prüfen:
```python
datas=ui_files,  # Muss gesetzt sein
```

## Automatisierung

### GitHub Actions (CI/CD)

Siehe `docs/windows_distribution.md` für vollständiges Beispiel.

### Lokales Release-Skript

```bash
#!/bin/bash
# release.sh - Erstellt vollständiges Release

VERSION="0.1.0"

echo "Building DocuMentor v$VERSION..."

# 1. Build
uv run python build_windows.py

# 2. Installer (falls Inno Setup installiert)
if command -v iscc &> /dev/null; then
    iscc installer.iss
    echo "✓ Installer erstellt"
fi

echo ""
echo "Release v$VERSION fertig!"
echo "  • ZIP: dist/DocuMentor-*-Windows.zip"
echo "  • Setup: dist/installer/DocuMentor-Setup-$VERSION.exe"
```

## Distribution

### ZIP-Archiv

**Vorteile:**
- Einfach, portable
- Keine Installation nötig
- USB-Stick-fähig

**Verwendung:**
- Auf GitHub Releases hochladen
- Per E-Mail versenden
- Auf Webserver bereitstellen

### Setup.exe

**Vorteile:**
- Professionell
- Start-Menü-Integration
- Deinstallation

**Verwendung:**
- Primäre Distributions-Methode
- Auf Website zum Download anbieten

## Dokumentation für Endbenutzer

Die `dist/DocuMentor/README.txt` wird automatisch erstellt und enthält:
- Installationsanweisungen
- Liste der externen Abhängigkeiten
- Konfigurationshinweise

## Weitere Informationen

Siehe `docs/windows_distribution.md` für detaillierte Dokumentation.
