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?