# Paket bauen — Test

Marker **PAKETBAU-V1** · Fassung **1.0** · PowerShell 5.1, läuft auch als EXE

## Dateien

| Datei | Zweck |
|---|---|
| `Paket-Bauen.ps1` | das Werkzeug (935 Zeilen, UTF-8 **mit BOM**) |
| `paket_bauen_config.json` | Quellordner, Ausgabe-Ordner, Vorauswahl |

## Wohin damit? (EIGENORD-V1)

**Empfohlen: `D:\Stream-Tools-Updater\Paket-Builder\`** — ein eigener Unterordner. Dann:

- der **Quellordner wird automatisch erkannt**: das Werkzeug sieht im
  Elternordner `Stream-Tools-Updater.exe` bzw. `.ps1` liegen und schlägt ihn vor
- der Ordner **`Paket-Builder` schließt sich selbst aus** und wandert nie mit ins Paket
- `Paket-Bauen.ps1`, `.exe`, `.cmd`, `paket_bauen_config.json` und das Startprotokoll
  sind zusätzlich hart gesperrt — auch wenn sie doch mal im Quellordner liegen

Drei Ablagen sind durchgerechnet:

| Ablage | Quelle wird vorgeschlagen | ausgeschlossen |
|---|---|---|
| `D:\Stream-Tools-Updater\Paket-Builder` | `D:\Stream-Tools-Updater` | `Paket-Builder` |
| `D:\Stream-Tools-Updater` (direkt drin) | `D:\Stream-Tools-Updater` | — |
| `D:\Werkzeuge\Paket-Builder` (ganz woanders) | Vorgabe aus der JSON | `Paket-Builder` |

## Was in der Liste steht

Dateien **und Ordner** zusammen, jeweils mit Häkchen:

| Spalte | zeigt |
|---|---|
| Name / Art | `Tools` als *Ordner*, `Stream-Tools-Updater.exe` als *Datei* |
| Größe | bei Ordnern rekursiv gerechnet |
| Geändert | Datum |
| **Prüfung** | `BOM ok` · **`BOM FEHLT`** (rot) · `v17.9` · `142 Dateien` · `enthaelt 3 Schlüsseldatei(en)` (gelb) |

**Vorausgewählt** ist der echte Bestand von `D:\Stream-Tools-Updater` inklusive
**`Tools`**, **`Zertifikate`** und **`Dateien`**.

**Nie dabei:** `GPU` (Treiber-Vorrat, viele GB), `Protokolle`, `Ausgabe`, `Backup`,
`Alt`, `_ersetzt`, `_verworfen` — und der eigene Ordner.

**Hart gesperrt** (lässt sich nicht anhaken): `setup.json`, `api.json` — die örtliche
Einrichtung jedes Rechners. Vor dem Packen wird zusätzlich der Arbeitsordner
durchsucht und alles Gesperrte entfernt, auch aus Unterordnern heraus.

## Die BOM-Prüfung

Fehlt einer `.ps1` die BOM, liest PowerShell 5.1 sie als ANSI — die Umlaute
zerfallen und das Skript stirbt beim Laden. Das siehst du jetzt **hier**, rot in
der Prüfspalte, statt es auf 44 Rechnern zu suchen. Beim Bauen kommt eine
Rückfrage mit der Liste der betroffenen Dateien.

## Die Fassung

Wird aus `Stream-Tools-Updater.exe` gelesen (Produktversion), sonst aus der `.ps1`.
Weichen beide ab, steht rot: **„EXE sagt v17.8, PS1 sagt v18.0 — neu kompilieren?"**
Genau der Fehler, der sonst ein Paket mit veralteter EXE erzeugt.

## Was gebaut wird

Im Ausgabe-Ordner entstehen:

| Datei | Inhalt |
|---|---|
| `version.txt` | nur die Zahl, **ohne BOM und ohne Zeilenumbruch** (`[version]` verschluckt sich sonst) |
| `Stream-Tools-Updater_<Fassung>.zip` | die gewählten Dateien und Ordner, Ordner an der richtigen Stelle |
| `Alt\` | ältere ZIPs wandern dorthin (abschaltbar) |

Danach läuft **Paket prüfen** von selbst: liest das ZIP wieder auf, zählt die
Einträge, nennt die enthaltenen Ordner und meldet, wenn der Kern fehlt oder etwas
Örtliches drin ist.

## Test

1. `Paket-Bauen.ps1` nach `D:\Stream-Tools-Updater\Paket-Builder\` legen und starten.
   Erwartung: Quellordner steht schon richtig, die Liste ist gefüllt, `Paket-Builder`
   taucht **nicht** darin auf.
2. Prüfspalte durchsehen — bei `BOM FEHLT` erst die Datei richten.
3. Fassung prüfen (grün = EXE und PS1 gleich).
4. **Paket bauen** → Rückfrage mit Anzahl und Größe → Protokoll zeigt jede Datei
   und jeden Ordner mit Größe, dann das ZIP-Ergebnis und den Prüflauf.
5. Im Ausgabe-Ordner nachsehen: `version.txt` und ZIP da, `setup.json` **nicht** im ZIP.

## Ungeprüft

Windows kann ich hier nicht ausführen. Geprüft sind Syntax, Variablen,
Aufrufreihenfolge, BOM, Fenstermaße (996×713, passt auf 1024×768), die
Fassungs-Erkennung an vier echten Dateien und die Ordner-Logik für alle drei
Ablagen.
