3 Installation Windows
julian edited this page 2026-11-04 21:41:54 +01:00

Installation unter Windows

Die Installation besteht aus Entpacken, einem Setup-Lauf und dem Start. Python, Perl und imapsync müssen nicht vorinstalliert werden.

Voraussetzungen

  • Windows 10 (1803+), Windows 11 oder Windows Server 2019+.
  • tar.exe (ab Windows 10 enthalten), wird nur beim Setup verwendet.
  • Internetzugang für den einmaligen Download (ca. 360 MB).
  • Etwa 1,3 GB freier Speicher nach dem Setup.
  • Keine Administratorrechte, keine Registry- oder PATH-Änderungen, kein Docker.

Download und Entpacken

  1. M365-to-Exchange-Sync-Windows.zip beziehen.
  2. In ein Verzeichnis außerhalb von C:\Program Files entpacken, z. B. C:\Tools\M365-to-Exchange-Sync. Pfade mit Leerzeichen sind zulässig.
  3. Prüfen, dass setup.bat, start.bat und backend/ vorhanden sind. Ein runtime/-Ordner ist im Archiv bewusst nicht enthalten.
mkdir C:\Tools
cd /d C:\Tools
tar -xf M365-to-Exchange-Sync-Windows.zip
cd M365-to-Exchange-Sync

Der Ordner darf nicht in einem synchronisierten Cloud-Verzeichnis liegen; die SQLite-Datenbank und die Sperrdatei vertragen keine konkurrierenden Zugriffe.

Setup

setup.bat

Das Setup ist idempotent: Ein zweiter Lauf ergänzt nur Fehlendes und ändert eine vorhandene .env nicht.

Komponente Zielpfad Quelle (SHA-256 geprüft)
Python 3.12.16 runtime\python\ python-build-standalone
Python-Pakete runtime\python\Lib\site-packages PyPI, gepinnt
Perl 5.42.3 runtime\perl\ Strawberry Perl, portable ZIP
imapsync 2.326 runtime\imapsync\imapsync offizielle Quelle des Autors

Downloads landen im Cache runtime\.cache und werden bei Wiederholung genutzt, solange die Prüfsumme passt.

setup.bat -NonInteractive     REM ohne Rückfragen
setup.bat -NoAdmin            REM ohne Administratorrechte (Standard)
setup.bat -ForceRuntime       REM Laufzeit vollständig neu einrichten

-ForceRuntime ersetzt runtime\python, runtime\perl und runtime\imapsync; data\ und .env bleiben unverändert.

Erster Start

start.bat

Beim ersten Start werden fehlende Laufzeitteile nachinstalliert, eine .env erzeugt und die Datenbank migriert. Der Server bindet an 127.0.0.1; der Browser öffnet erst, wenn der Server bereit ist. Die Ausgabe nennt die tatsächliche Adresse, z. B. http://127.0.0.1:8000.

Ist Port 8000 belegt oder per Richtlinie gesperrt (WinError 10013), prüft der Start die folgenden Ports bis 8025 und meldet den Ausweichport samt passender OAuth-Redirect-URI.

start.bat --repair                          REM Laufzeit prüfen und reparieren
set M365SYNC_NO_BROWSER=1 && start.bat      REM ohne Browserstart

Details zur ersten Anmeldung: Erster Start.

Verzeichnisse

M365-to-Exchange-Sync\
├── setup.bat, start.bat, update.bat
├── backend\              Anwendung und Datenbankmigrationen
├── frontend\dist\        gebaute Oberfläche
├── runtime\              portable Laufzeit (Python, Perl, imapsync)
├── data\
│   ├── database\app.db   SQLite-Datenbank
│   ├── logs\             Laufprotokolle
│   ├── tmp\              temporäre Secret-Dateien (werden gelöscht)
│   └── updates\          Update-Arbeitsverzeichnis und Sicherungen
└── .env                  Konfiguration und Schlüssel

Alle Pfade in der .env sind relativ (DATA_DIR=data, IMAPSYNC_PATH=runtime/imapsync/imapsync), damit der Ordner verschiebbar bleibt. Eine ältere data\app.db wird beim ersten Start automatisch nach data\database\app.db übernommen.

Verschieben und Deinstallation

Verschieben: Anwendung beenden, den kompletten Ordner verschieben (auch in Pfade mit Leerzeichen) und start.bat im neuen Pfad ausführen. Es sind keine Pfade außerhalb des Ordners zu ändern. Bei Kopien auf Datenträger ohne Rechteübernahme (FAT/exFAT) können Tokens und Schlüssel für andere Benutzer lesbar werden; solche Ziele vermeiden.

Deinstallation: Es gibt keine Registry-Einträge, keine Dienste, keine geplanten Aufgaben und keine Dateien in AppData oder ProgramData. Anwendung beenden, bei Bedarf data\ sichern, dann den Programmordner löschen. Achtung: Damit werden Datenbank, verschlüsselte Tokens und Zielpasswörter, Protokolle sowie die .env mit den Schlüsseln entfernt; ohne vorherige Sicherung ist keine Wiederherstellung möglich.

Diagnose

Aus dem Verzeichnis backend\:

..\runtime\python\python.exe -m app.cli check

Nur die Laufzeit prüfen (aus dem Projektordner):

runtime\python\python.exe scripts\provision_runtime.py --check

check prüft Konfiguration, Schreibrechte, Datenbankrevision, Bindbarkeit des Ports, imapsync und Frontend-Build; Exit-Code 0 bedeutet betriebsbereit, 1 blockierende Probleme. provision_runtime.py --check prüft nur die Laufzeit (Python, Perl, IO::Socket::SSL, imapsync).

Bekannte Einschränkungen

  • Das Setup benötigt Internet; ein Offline-Bundle gibt es nicht.
  • Strawberry Perl veröffentlicht keine eigene Prüfsummendatei; die SHA-256 ist im Setup-Skript hinterlegt.
  • Der Ausweichport ist nicht dauerhaft. Für eine fest registrierte OAuth-Redirect-URI APP_PORT in der .env setzen.
  • Ein echtes Strg+C in einer Windows-Konsole ist nicht reproduzierbar getestet.