Projekt

Allgemein

Profil

Feature #93

Von Julius Haman vor 3 Tagen aktualisiert

## Ziel 

 Ein Benutzer mit einem ANT+-Ergometer (FE-C) oder einem ANT+-Pulsgurt soll nach der 
 Installation von ErControl ohne weitere Schritte testen können, ob ErControl mit seinem 
 Gerät funktioniert. 

 Vorher ging das nicht: `AntInterface.exe` wurde nicht mitinstalliert, und der Pfad zur Datei 
 war in den Einstellungen standardmäßig leer. `Prefs.AntInterfaceReady` prüfte nur 
 `File.Exists` auf diesem leeren Pfad und war damit `false`. Die Testknöpfe in der 
 Geräteverwaltung brachen deshalb mit "AntInterface ist nicht konfiguriert" ab – unabhängig 
 davon, ob ein funktionierendes ANT+-Gerät angeschlossen war. 

 ## Entscheidung 

 **AntInterface wird immer installiert. Keine Checkbox, keine Komponente, kein Opt-in.** 

 Begründung: 
 - Die Datei ist inert: kein Treiber, kein Dienst, keine Registry-Einträge, kein Autostart. 
   Sie startet ausschließlich, wenn ErControl sie mit einem Pfad explizit aufruft. Sie kann 
   also keine Fehlwirkung verursachen – sie kann nur fehlen. 
 - Der Nutzer, der den Test braucht, weiß in der Regel nicht, was "AntInterface" ist. Eine 
   abgewählte Komponente hätte exakt das alte Problem reproduziert: Datei fehlt, Testknopf tot. 
 - Kosten: 21,7 MB im Archiv – gegenüber ErControl (205,8 MB) vertretbar. 

 ## Umsetzung 

 1. Installer (`Misc/Setup/ErControl.iss`): `Release\AntInterface\*` wird nach `{app}\AntInterface` 
    kopiert, ohne Checkbox und ohne Komponente. Eigenes Unterverzeichnis, weil die 
    x86-Selbstpublish-Version rund 100 Laufzeit-DLLs mitbringt, die sonst im Anwendungsordner 
    neben `ErControl.WPF.exe` lägen. `THIRD-PARTY-NOTICES.txt` wird an dieser Stelle 
    ausgeschlossen, da ErControl die Datei bereits nach `{app}` installiert (in den 
    Release-Ständen vom 14.09. fehlte sie noch, das korrigiert der nächste Build mit). 
 2. Pfadauflösung (`Prefs.AntInterfaceExePath`): liefert die mitinstallierte Datei, sobald sie 
    vorhanden ist, sonst den hinterlegten Override (`AntInterfaceExePathOverride`, gleicher 
    Preferences-Key `AntPowerBridge|ExePath` wie bisher). Die Reihenfolge ist bewusst so: ein 
    früher von Hand eingetragener Pfad würde nach einem Update sonst unbemerkt weiter auf eine 
    veraltete AntInterface zeigen – so gewinnt immer die Version, die mit diesem ErControl 
    ausgeliefert und mit ihm getestet wurde. Im Debug-Build liefert `AntInterfaceBundled` per 
    `#if DEBUG` pauschal `false`, dort liegt die exe nicht neben der Anwendung und der Pfad 
    muss weiterhin von Hand gesetzt werden. 
 3. Einstellungen (`PreferencesView`/`PreferencesViewModel`): Das Feld zeigt den Pfad, den 
    ErControl tatsächlich startet, und ist gesperrt (Browse-Button ausgeblendet), solange die 
    mitinstallierte Datei gewinnt – eine Eingabe würde ohnehin ignoriert. Die bisherige 
    Sichtbarkeitslogik für die ganze Zeile entfällt dadurch. 
 4. Neu `AntInterface/ANT-Stick.txt`: kurzer Hinweistext für Anwender (Voraussetzungen, 
    Testknopf, Logpfad) mit dem ausdrücklichen Hinweis, dass der 32-Bit-Treiber für den 
    ANT-Stick **nicht** mitgeliefert wird, sondern vom Hersteller des Sticks stammt – ohne 
    diesen Hinweis wäre ein neues "warum geht das nicht" zu erwarten gewesen. 
 5. Versionierung: ErControl und AntInterface teilen sich jetzt eine Versionsnummer, die nur 
    noch in `Directory.Build.props` steht (3.1.1.0 auf 3.1.2.0 angehoben). 
    `AntInterface.csproj` pflegt keine eigene `<Version>` mehr, sondern erbt sie und 
    überschreibt projektlokal nur `<Product>` (damit die exe in den Dateieigenschaften nicht 
    "ErControl" heißt). Grund: AntInterface gehört jetzt zum Auslieferungsumfang des Setups, 
    ein eigener Versionsstrang hätte zwei Nummern für eine einzige Lieferung erzeugt. Bump auf 
    3.1.2 statt 3.1.1, weil 3.1.1 bereits am 24.09. ohne mitgelieferte AntInterface erschienen 
    ist. Die Testwerkzeuge (AntFecTester, BleFtmsTester, BleFtmsReceiver, SerialTester) 
    behalten bewusst eigene Versionen – eigenständige Downloads mit eigener Redmine-Version. 

 6. Protokoll-Datei (`AntInterface/Program.cs`, `ConfigureLogging`): landet jetzt im selben 
    Ordner wie das ErControl-Protokoll (`%LOCALAPPDATA%\ErControl3\logs\`) statt in einem 
    eigenen `AntInterface`-Ordner. AntInterface wird seit diesem Ticket nur noch über den 
    Testknopf in der Geräteverwaltung gestartet, ein zweiter Log-Ordner hätte die Fehlersuche 
    unnötig auf zwei Orte verteilt. `ANT-Stick.txt` und `AntInterface/README.md` sind auf den 
    neuen Pfad angepasst. 

 ## Frühere offene Frage – jetzt entschieden 

 Die Einstellung "Pfad zur AntInterface.exe" wurde **nicht** entfernt: Der Override bleibt als 
 Notnagel für den Entwicklungsbetrieb (Debug-Build, dort liegt die exe nicht neben 
 `ErControl.WPF.exe`) und für eine unvollständige Installation erhalten, ist im Feld aber 
 gesperrt/ausgeblendet, solange die mitinstallierte Datei automatisch gewinnt. 

 ## Nicht Bestandteil 

 - Kein Ausbau des Testwerkzeugs `AntFecTester`, kein zusätzlicher Testdialog, keine 
   Schnittstellenänderung. Der Knopf "Testen" in der Geräteverwaltung deckt FE-C und 
   ANT+-Puls ab und bleibt der Weg für Anwender. 
 - Keine Änderung am Pipe-Protokoll (`ErControl.AntProtocol`, `ProtocolVersion = 1`). 

 ## Geprüft / nicht geprüft 

 Geprüft: `dotnet build` (Debug und Release) mit 0 Warnungen/0 Fehlern, `ErControl.Core.Tests` 
 128/128 grün, beide exe melden Version 3.1.2.0. 

 Nicht geprüft: der Installer-Build selbst (auf dem Entwicklungsrechner ist kein InnoSetup 
 installiert) und die Wirkung nach einer echten Installation ohne angeschlossenes 
 ANT+-Gerät. 

Zurück