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 Heute geht das nicht: `AntInterface.exe` wurde wird nicht mitinstalliert, und der Pfad zur Datei 
 war ist in den Einstellungen standardmäßig leer. leer (`Prefs.AntInterfaceExePath`, Default `""`). 
 `Prefs.AntInterfaceReady` prüfte prüft nur 
 `File.Exists` auf diesem leeren Pfad und war ist damit 
 `false`. Die Testknöpfe in der 
 Geräteverwaltung brachen brechen deshalb mit "AntInterface ist nicht 
 konfiguriert" ab – unabhängig 
 davon, ob ein funktionierendes ANT+-Gerät angeschlossen war. ist. 

 Fundstellen: 
 - `Misc/Setup/ErControl.iss:31` kopiert ausschließlich `Release\ErControl\*` 
 - `build.ps1:15` published `AntInterface` nur nach `Release\AntInterface` und als eigenes 7z 
 - `ErControl.Model/Services/Prefs.cs:289` (Pfad, Default leer) und `:374` (`AntInterfaceReady`) 
 - `ErControl.Core/ViewModels/DevicesViewModel.cs:684` (Test FE-C) und `:817` (Test ANT+-Puls) 

 ## 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 reproduziert exakt das alte Problem reproduziert: heutige Problem: Datei fehlt, Testknopf tot. 
 - Kosten: 71,9 MB entpackt, 21,7 MB im Archiv – gegenüber ErControl (205,8 MB) vertretbar. rund zehn 
   Prozent mehr Installer-Größe. 

 ## Umsetzung Maßnahmen 

 1. Installer (`Misc/Setup/ErControl.iss`): `Release\AntInterface\*` wird `AntInterface.exe` als fester Bestandteil des InnoSetups installieren, ohne 
    Auswahlmöglichkeit. 
 2. Ablage nach `{app}\AntInterface` 
    kopiert, ohne Checkbox und ohne Komponente. Eigenes Unterverzeichnis, weil (Unterordner). Grund: die x86-Selbstpublish-Version 
    x86-Selbstpublish-Version enthält rund 100 Laufzeit-DLLs mitbringt, Laufzeit-DLLs, die sonst im Anwendungsordner neben 
    neben `ErControl.WPF.exe` lägen. liegen. 
 3. `THIRD-PARTY-NOTICES.txt` wird an dieser Stelle 
    ausgeschlossen, da nicht mitkopieren. ErControl installiert die Datei 
    Dateie bereits nach `{app}` installiert (in den (`ErControl.WPF/ErControl.WPF.csproj`); die bisherigen 
    Release-Ständen Release-Stände vom 14.09. fehlte enthielten sie noch, noch nicht, das korrigiert der nächste Build mit). Build. 
 2. Pfadauflösung (`Prefs.AntInterfaceExePath`): liefert die mitinstallierte Datei, sobald sie 
    vorhanden ist, sonst 4. ErControl ermittelt den hinterlegten Override (`AntInterfaceExePathOverride`, gleicher Pfad selbst, wenn keiner hinterlegt ist: 
    Preferences-Key `AntPowerBridge|ExePath` wie bisher). Die Reihenfolge ist bewusst so: ein `AppContext.BaseDirectory\AntInterface\AntInterface.exe`. Damit funktioniert der 
    früher von Hand eingetragener Pfad würde Testknopf direkt 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 Installation, ohne dass der Pfad 
    muss weiterhin von Hand gesetzt werden. Nutzer etwas einstellen muss. 
 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 5. Hinweistext für Anwender (Voraussetzungen, 
    Testknopf, Logpfad) mit dem ausdrücklichen Hinweis, dass der aufnehmen: Der 32-Bit-Treiber für den 
    ANT-Stick wird **nicht** mitgeliefert wird, sondern mitgeliefert, 
    er stammt vom Hersteller des Sticks stammt – ohne Sticks. `AntInterface.exe` allein macht einen ANT-Stick 
    nicht nutzbar. Ohne diesen Hinweis wäre entsteht 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. nicht". 

 ## 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 Prüfbar / nicht geprüft prüfbar 

 Geprüft: `dotnet build` (Debug und Release) mit 0 Warnungen/0 Fehlern, `ErControl.Core.Tests` Prüfbar ohne Gerät: 
 128/128 grün, beide exe melden Version 3.1.2.0. - `AntInterface.exe` liegt nach der Installation unter `{app}\AntInterface`. 
 - `Prefs.AntInterfaceReady` ist ohne jede Einstellung `true`. 
 - Der Testknopf meldet "Gerät antwortet nicht" bzw. "kein Puls" statt "nicht konfiguriert". 

 Nicht geprüft: der Installer-Build selbst (auf dem Entwicklungsrechner prüfbar ohne Hardware: 
 - Die Kommunikation mit einem echten ANT+-Trainer bzw. -Pulsgurt. Hier ist kein InnoSetup 
 installiert) und Gerät 
   angeschlossen; die Wirkung nach einer echten Installation ohne angeschlossenes 
 ANT+-Gerät. FUNKTION des Testknopfs ist daher unbestätigt. 

 ## Offen 

 - Die Einstellung "Pfad zur AntInterface.exe" wird für Anwender nicht mehr benötigt. Für den 
   Entwicklungsbetrieb (Start aus dem Quellcode, dort liegt `AntInterface.exe` nicht neben 
   `ErControl.WPF.exe`) als manuelle Ausnahme behalten oder ganz entfernen?

Zurück