Two fixes for delete propagation in Phase 1: 1. When Outlook contact not found by EntryID, try to re-match by name/email/phone before assuming it was deleted. Outlook can change EntryIDs on restart or profile changes, causing the sync to think ALL contacts were deleted. 2. When Starface contact not found in current list, DON'T delete from Outlook. The contact may belong to a different address book. Just drop the mapping and let Phase 2/3 re-link it. These changes make delete propagation much safer and prevent accidental mass-deletion of contacts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| installer | ||
| src/StarfaceOutlookSync | ||
| .gitignore | ||
| README.md | ||
| StarfaceOutlookSync.sln | ||
| release.sh | ||
README.md
Starface Kontakt-Sync
Windows-Anwendung zur bidirektionalen Synchronisation von Kontakten zwischen Microsoft Outlook und einer Starface Telefonanlage.
Funktionen
- Bidirektionale Synchronisation von Kontakten zwischen Outlook und Starface
- Profil-System zum Verwalten mehrerer Sync-Konfigurationen (verschiedene Adressbuecher oder Anlagen)
- Starface-Adressbuecher: Zentrales Adressbuch, persoenliches Adressbuch und Tag-basierte Adressbuecher
- Outlook-Kontaktordner: Frei waehlbarer Kontaktordner als Sync-Ziel
- Sync-Richtung konfigurierbar: Outlook -> Starface, Starface -> Outlook oder bidirektional
- Intelligentes Matching: Kontakte werden anhand von E-Mail-Adresse oder Name abgeglichen
- Aenderungserkennung: Nur geaenderte Kontakte werden uebertragen (Hash-basiert)
- Auto-Sync: Optionaler automatischer Sync in konfigurierbarem Intervall
- System Tray: Laeuft im Hintergrund, Schnell-Sync per Rechtsklick
- Kompatibel mit Outlook Classic und dem neuen Outlook
- Komplett lokal: Kein Exchange, kein Microsoft 365, kein Cloud-Konto erforderlich
Voraussetzungen
- Windows 10/11
- .NET 8 Desktop Runtime (Setup prueft und verlinkt die Download-Seite falls noetig)
- Microsoft Outlook (Classic oder Neu, beliebige Version)
- Starface Telefonanlage ab Version 6.7 (REST-API)
Installation beim Kunden
Setup ausfuehren
StarfaceOutlookSync_Setup_0.0.0.1.exeausfuehren- Installationsoptionen waehlen:
- Desktop-Verknuepfung erstellen (optional)
- Bei Windows-Anmeldung automatisch starten (empfohlen)
- Fertig - die App startet automatisch
Nach der Installation
- App starten (Tray-Icon oder Desktop-Verknuepfung)
- "Neues Profil" klicken
- Starface-Verbindungsdaten eingeben (Host, Login-ID, Kennwort)
- "Verbindung testen" und "Adressbuecher laden"
- Starface-Adressbuch und Outlook-Kontaktordner waehlen
- Speichern und "Jetzt synchronisieren"
Outlook-Sicherheitsabfrage unterdruecken
Beim Zugriff auf Outlook-Kontakte zeigt Outlook standardmaessig einen Sicherheitsdialog ("Ein Programm versucht auf Ihre E-Mail-Adressinformationen zuzugreifen"). Dieser kann in den Einstellungen der App deaktiviert werden:
- In der App auf "Einstellungen" klicken
- "Outlook-Sicherheitsabfrage automatisch erlauben" aktivieren
- Speichern
Auf Domaenen-PCs / Terminal Servern:
Die Outlook-Sicherheitseinstellungen werden dort per Gruppenrichtlinie (GPO) gesteuert und sind im Trust Center ausgegraut. In diesem Fall muss die App einmalig als Administrator gestartet werden, damit die Registry-Keys unter HKLM geschrieben werden koennen:
- Rechtsklick auf die App -> "Als Administrator ausfuehren"
- Einstellungen -> "Outlook-Sicherheitsabfrage automatisch erlauben" aktivieren
- Speichern und App schliessen
- Outlook neu starten
- App kann danach wieder normal (ohne Admin) gestartet werden
Die Einstellung bleibt dauerhaft bestehen und gilt fuer alle Benutzer auf dem Rechner.
Deinstallation
Ueber Windows Einstellungen -> Apps oder die Systemsteuerung. Benutzerdaten (Profile, Mappings) werden mit entfernt.
Entwicklung
Voraussetzungen (Build)
- .NET 8 SDK (laeuft auf Windows, Linux und macOS)
- Fuer den Installer: Inno Setup 6 (Windows) oder Docker (Linux)
.NET SDK installieren
Windows:
winget install Microsoft.DotNet.SDK.8
Debian/Ubuntu:
# Ueber das offizielle Install-Script:
wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x dotnet-install.sh
./dotnet-install.sh --channel 8.0
export PATH="$HOME/.dotnet:$PATH"
Bauen
Das Projekt kann sowohl unter Windows als auch unter Linux gebaut werden. Die fertige EXE laeuft nur auf Windows (WinForms + COM Interop).
# Release-Build
dotnet build src/StarfaceOutlookSync/StarfaceOutlookSync.csproj -c Release
# Oder publish (mit allen Abhaengigkeiten):
dotnet publish src/StarfaceOutlookSync/StarfaceOutlookSync.csproj -c Release
Build-Ausgabe: src/StarfaceOutlookSync/bin/Release/net8.0-windows/win-x64/
Installer erstellen
Die Setup-EXE wird mit Inno Setup 6 erstellt.
Linux (Docker - empfohlen):
Einfachster Weg unter Linux. Baut und packt alles in einem Schritt:
# 1. Release bauen
dotnet build src/StarfaceOutlookSync/StarfaceOutlookSync.csproj -c Release
# 2. Installer erstellen
docker run --rm -v "$PWD:/work" amake/innosetup installer/setup.iss
Die fertige Setup-EXE liegt danach in dist/.
Komplett als Einzeiler (Build + Installer):
dotnet build src/StarfaceOutlookSync/StarfaceOutlookSync.csproj -c Release && docker run --rm -v "$PWD:/work" amake/innosetup installer/setup.iss
Windows:
- Inno Setup 6 installieren
installer/setup.issoeffnen und kompilieren- Setup-EXE wird in
dist/erstellt
Oder per Kommandozeile:
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe" installer\setup.iss
Linux (Wine - Alternative falls kein Docker vorhanden):
# Einmalig: Inno Setup in Wine installieren
sudo apt install wine
wine ~/Downloads/innosetup-6.x.exe
# Kompilieren
wine "$HOME/.wine/drive_c/Program Files (x86)/Inno Setup 6/ISCC.exe" installer/setup.iss
Release erstellen
Das Release-Script automatisiert den kompletten Release-Prozess: Versionsnummer aktualisieren, bauen, Installer erstellen, Git Tag + Push und Gitea Release mit Setup-EXE als Download hochladen.
./release.sh <version> ["beschreibung"]
Beispiele:
# Release mit Standard-Beschreibung
./release.sh 0.1.0.0
# Release mit eigener Beschreibung
./release.sh 0.2.0.0 "Neues Feature: Auto-Sync"
Das Script fragt beim Start nach Gitea-Benutzername und Kennwort und fuehrt dann folgende Schritte automatisch aus:
- Prueft Voraussetzungen (dotnet, docker, curl, sauberes git)
- Aktualisiert Versionsnummer in
.csproj,AboutForm.csundsetup.iss - Baut das Projekt (
dotnet build -c Release) - Erstellt den Installer via Docker (
amake/innosetup) - Git Commit + Tag (
vX.X.X.X) - Push zu Gitea (main + tag)
- Erstellt Gitea Release mit Setup-EXE als Download-Anhang
Voraussetzungen:
- .NET 8 SDK
- Docker
- curl
- Gitea-Account mit Push-Rechten auf das Repository
Projektstruktur
outlook-sync/
├<><E2949C>─ StarfaceOutlookSync.sln # Visual Studio Solution
├── installer/
│ └── setup.iss # Inno Setup Script
└── src/StarfaceOutlookSync/
├── StarfaceOutlookSync.csproj # Projektdatei
├── Program.cs # Entry Point (Single Instance)
├── Models/
│ ├── UnifiedContact.cs # Kontakt-Datenmodell
│ └── SyncProfile.cs # Profile, Mappings, Ergebnisse
├── Services/
│ ├── StarfaceApiClient.cs # Starface REST-API Client
│ ├── OutlookContactsService.cs # Outlook COM Interop
│ ├── ProfileManager.cs # Profilverwaltung (AppData)
│ └── SyncEngine.cs # Bidirektionale Sync-Logik
└── UI/
├── MainForm.cs # Hauptfenster + System Tray
├── ProfileEditorForm.cs # Profil anlegen/bearbeiten
├── SyncProgressForm.cs # Sync-Fortschritt mit Log
└── AboutForm.cs # Info-Dialog
Synchronisierte Kontaktfelder
| Feld | Outlook (COM) | Starface (REST) |
|---|---|---|
| Vorname | FirstName | NAME |
| Nachname | LastName | SURNAME |
| Firma | CompanyName | COMPANY |
| Position | JobTitle | JOB_TITLE |
| Email1Address | ||
| Telefon (Buero) | BusinessTelephoneNumber | OFFICE_PHONE_NUMBER |
| Mobiltelefon | MobileTelephoneNumber | MOBILE_PHONE_NUMBER |
| Telefon (Privat) | HomeTelephoneNumber | PRIVATE_PHONE_NUMBER |
| Fax | BusinessFaxNumber | FAX_NUMBER |
| Strasse | BusinessAddressStreet | STREET |
| Stadt | BusinessAddressCity | CITY |
| PLZ | BusinessAddressPostalCode | POSTAL_CODE |
| Bundesland | BusinessAddressState | STATE |
| Land | BusinessAddressCountry | COUNTRY |
| Webseite | WebPage | URL |
| Notizen | Body | NOTE |
| Anrede | Title | SALUTATION |
| Geburtstag | Birthday | BIRTHDAY |
Technische Details
Architektur
Die Anwendung ist eine native Windows-App (WinForms, .NET Framework 4.8). Sie greift direkt per COM Interop auf Outlook-Kontakte zu und kommuniziert per REST-API mit der Starface. Kein Webserver, kein Browser, kein Exchange erforderlich.
StarfaceOutlookSync.exe
├── COM Interop -> Outlook Kontakte (lokal)
├── REST-API -> Starface Telefonanlage (HTTPS)
└── Dateisystem -> Profile & Mappings (%AppData%)
Datenspeicherung
Alle Daten werden lokal pro Benutzer gespeichert:
%AppData%\StarfaceOutlookSync\profiles.json- Sync-Profile mit Zugangsdaten%AppData%\StarfaceOutlookSync\mappings\- Kontakt-Zuordnungen pro Profil
SSL-Zertifikate
Self-signed Zertifikate der Starface werden automatisch akzeptiert. Es ist kein manueller Zertifikat-Import erforderlich.
Lizenz
Proprietaer - Alle Rechte vorbehalten.
HackerSoft - Hacker-Net Telekommunikation Stefan Hacker Am Wunderburgpark 5b 26135 Oldenburg