Files
EngineeringSync/EngineeringSync.Setup/Views/Pages/ServiceOptionsPage.xaml
EngineeringSync 04ae8a0aae Initial commit: EngineeringSync v1.0.0
Vollständige Implementierung des EngineeringSync-Middleware-Tools:
- Windows Service (Kestrel :5050) mit FileSystemWatcher + SignalR
- WPF Tray-App mit PendingChanges- und Projektverwaltungs-Fenster
- Setup-Wizard (8-Schritte-Installer)
- SQLite/EF Core Datenschicht (WAL-Modus)
- SHA-256-basiertes Debouncing (2s Fenster)
- Backup-System mit konfigurierbarer Aufbewahrung

Bugfixes & Verbesserungen:
- BUG-1: AppDbContext OnConfiguring invertierte Bedingung behoben
- BUG-2: Event-Handler-Leak in TrayApp (Fenster-Singleton-Pattern)
- BUG-3: ProjectConfigChanged SignalR-Signal in allen CRUD-Endpoints
- BUG-5: Rename-Sync löscht alte Datei im Simulations-Ordner
- BUG-6: Doppeltes Dispose von SignalR verhindert
- BUG-7: Registry-Deinstallation nur EngineeringSync-Eintrag entfernt
- S1: Path-Traversal-Schutz via SafeCombine() im SyncManager
- E1: FSW Buffer 64KB + automatischer Re-Scan bei Overflow
- E2: Retry-Logik (3x) für gesperrte Dateien mit exponentiellem Backoff
- E4: Channel.Writer.TryComplete() beim Shutdown
- C2: HubMethodNames-Konstanten statt Magic Strings
- E3: Pagination in Changes-API (page/pageSize Query-Parameter)
- A1: Fire-and-Forget mit try/catch + Logging

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 21:52:26 +01:00

52 lines
2.6 KiB
XML

<local:WizardPageBase x:Class="EngineeringSync.Setup.Views.Pages.ServiceOptionsPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:EngineeringSync.Setup.Views.Pages"
Background="White">
<Grid Margin="40,32,40,24">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="Start- und Verknüpfungs-Optionen"
Style="{StaticResource PageTitleStyle}"/>
<TextBlock Grid.Row="1" Style="{StaticResource PageSubtitleStyle}"
Text="Legen Sie fest, wie EngineeringSync beim Start von Windows und nach der Installation verhalten soll."/>
<StackPanel Grid.Row="2">
<!-- Autostart-Gruppe -->
<TextBlock Text="AUTOSTART" Style="{StaticResource FieldLabelStyle}" Margin="0,0,0,10"/>
<local:OptionCard Icon="&#xE8FE;" Title="Windows-Dienst automatisch starten"
Description="Der EngineeringSync-Dienst startet automatisch mit Windows (empfohlen)"
IsChecked="{Binding AutoStartService, Mode=TwoWay}"/>
<local:OptionCard Icon="&#xE756;" Title="Tray-App bei Anmeldung starten"
Description="Die Benachrichtigungs-App erscheint automatisch im Systemtray nach dem Login"
IsChecked="{Binding AutoStartTrayApp, Mode=TwoWay}"/>
<!-- Verknüpfungen -->
<TextBlock Text="VERKNÜPFUNGEN" Style="{StaticResource FieldLabelStyle}" Margin="0,20,0,10"/>
<local:OptionCard Icon="&#xE7C5;" Title="Desktop-Verknüpfung erstellen"
Description="Erstellt eine Verknüpfung zur Tray-App auf dem Desktop"
IsChecked="{Binding CreateDesktopShortcut, Mode=TwoWay}"/>
<local:OptionCard Icon="&#xE8A9;" Title="Startmenü-Eintrag erstellen"
Description="Fügt EngineeringSync dem Windows-Startmenü hinzu"
IsChecked="{Binding CreateStartMenuEntry, Mode=TwoWay}"/>
<!-- Nach Installation -->
<TextBlock Text="NACH INSTALLATION" Style="{StaticResource FieldLabelStyle}" Margin="0,20,0,10"/>
<local:OptionCard Icon="&#xE768;" Title="Tray-App nach Installation starten"
Description="Startet die Tray-App direkt nach Abschluss der Installation"
IsChecked="{Binding StartAfterInstall, Mode=TwoWay}"/>
</StackPanel>
</Grid>
</local:WizardPageBase>