NEWS
Test ioBroker unter Windows installieren - 2022 Edition
-
@codierknecht sagte in Test ioBroker unter Windows installieren - 2022 Edition:
Stellt sich die Frage, ob man beim Installieren von ioBroker per NPM festlegen kann, mit welchen Ports ioB zu arbeiten hat. Im Installer könnte man ja bei verwendeten Ports eine Seite zur Portauswahl zwischenschalten.
Irgendwie geht das. Der alte Installer konnte das. Brauchte er wegen der Parallelinstanzen.
Die Portbelegung kam durch Intel Graphik, wie dort https://forum.iobroker.net/post/925516 erwähnt.
-
@klassisch Ja der alte Installer ist aber am Ende so "Hoch komplex geworden" das ihn keiner mehr verstanden hat, daher mussten wir eine "Back to the basics cut" machen
-
@apollon77
Ich bin zum Installer noch einen kleinen Schritt weiter gekommen:
Der Installer prüft, ob die DateiC:\Program Files\Common Files\nodejs\node.exe
existiert.
Mein Node.js 16.18.1 hat sich aber standardmäßig nachC:\Program Files\nodejs
installiert.
Somit bekommt der Installer des ioBroker gar nicht mit, dass Node bereits installiert ist und installiert nochmal sein eigenes.Issue ist entsprechend ergänzt.
-
@codierknecht said in Test ioBroker unter Windows installieren - 2022 Edition:
Somit bekommt der Installer des ioBroker gar nicht mit, dass Node bereits installiert ist und installiert nochmal sein eigenes.
Wie bereits beim Issue kommentiert wäre es imo das Sicherste, node.exe über den Windows Pfad zu ermitteln. Ich habe einen PR mit einem entsprechenden Vorschlag erstellt.
-
Leider hatte das mit dem Pfad seine Tücken. Wenn kein Node installiert war, wurde de Pfad während der Node Installation aktualisiert, aber der Installer bekam das nicht mit.
Ich hab den PR jetzt so geändert, dass der Pfad aus der Registry genommen wird, diese Aktualisierung bekommt man im Installer mit.
Die Node Versionsprüfung hab ich gelassen, wie sie war (also über node.exe).Diverse Tests mit und ohne installiertem Node.js waren jetzt bei mir erfolgreich.
-
Ich hab jetzt nochmal ein wenig mit dem Installer rumgespielt. Dabei ist mir aufgefallen, dass der npx Call am Ende anscheinend nicht ganz stimmt. Irgendwas ist da doppelt gemoppelt. Seltsamerweise klappt es manchmal, d.h. die npx ioBroker Installation klappt manchmal, manchmal läuft sie los, bricht aber ab und manchmal startet sie erst gar nicht bzw. bricht sofort ab.
Ich hab einen weiteren PR angelegt, wie es meiner Meinung nach richtig sein müsste. Im Test funktioniert es bei mir damit zuverlässig (bei Neuinstallation, mehr dazu weiter unten).Und noch eine Frage/Anmerkung:
Führt man den Installer bei vorhandener Installer-Installation erneut aus, wird node.js geprüft und ggfs. aktualisiert. Anschließend wird aber die npx ioBroker Installation erneut ausgeführt. Bei mir bricht die sofort ab und lässt ioBroker in einem merkwürdigen Zustand zurück. Nach manuellem ioBroker stop/start läuft er dann wieder.
Soll das so sein?
Ich könnte mir zwei Alternativen vorstellen:
a) nach dem Uptate von node.js ist Schluss
b) es wird nicht "npx @iobroker/install" sondern "npx @iobroker/fix" aufgerufen
Bei b) bin ich mir nicht so sicher, ob das nicht ein zu großes Risiko ist und man enigstens noch eine Abfrage vorschalten müsste/sollte.Was meint Ihr?
-
@gaspode
Üblich ist unter Windows doch wohl, dass beim Starten eines Installers festgestellt wird, dass die Applikation bereits installiert ist und dann "Deinstallieren" und ggf. "Reparieren/Modifizieren" angeboten wird.
Ich würde daher für Option b) plädieren - natürlich mit der Möglichkeit, das auch einfach abzubrechen.Ich werde den Installer auch nochmal neu bauen und testen.
Da bei mir ja die Ports bereits verwendet werden, kümmere ich mich dann gleich auch mal um die Erkennung der Ports.
Dazu auch 'ne Frage: Soll - wenn festgestellt wird dass die Ports bereits verwendet werden - der Installer
a) nach den zu nutzenden Ports fragen?
b) selbständig freie Ports suchen und diese verwenden?
c) nur eine Meldung bringen und die Installation abbrechen
Ich würde hier zu b) tendieren, da gerade Einsteiger bereits überfordert sein könnten.Stellt sich dann noch die Frage aller Fragen: Wie kann man eigentlich direkt bei der Installation über npx festlegen, welche Ports für ioBroker verwendet werden sollen? Wenn das überhaupt geht.
-
@gaspode sagte in Test ioBroker unter Windows installieren - 2022 Edition:
b) es wird nicht "npx @iobroker/install" sondern "npx @iobroker/fix" aufgerufen
Generell ist es so gebaut das ein "install" am Ende nichts kaputt macht ... es wird ggf nochmal Zeug neu geschrieben oder neu gesetzt bzw er service neu registriert aber ja fix wäre korrekt.
HJetzt gibts nur das Problem das (gibts anderen Thread) ich immer noch nicht rausgefunden habe warum "fix" bei Windows teilweise nicht geht versuch mal manuell in deinem iobroker dir auszuführen
-
@apollon77 said in Test ioBroker unter Windows installieren - 2022 Edition:
versuch mal manuell in deinem iobroker dir auszuführen
Ich habe den "Node.js Command Prompt" als Admin ausgeführt, damit kommt auch bei mir auf einer frischen ioBroker Installation leider:
F:\ioBrokerTest>npx @iobroker/fix Need to install the following packages: @iobroker/fix@4.2.1 Ok to proceed? (y) y "(" kann syntaktisch an dieser Stelle nicht verarbeitet werden.
-
@gaspode Und genau das ist es ... ich hab nicht rausgefunden was da passiert Und auch nicht wie ich npm die "logausgaben" entlocken kann aber das ist an sich Themenfremd hier ...
Eigentlich kann es nur sein das er in den Linux Fall läuft https://github.com/ioBroker/ioBroker/blob/master/lib-npx/install.js#L37 hatte aber noch keine Zeit da tiefer zu schauen ... muss erst was auf windows dafür aufsetzen.
Von daher ... install sollte erstmal ok sein auch bei bestands installation (nur DB komprimierung fehlt dann ... das ist akzeptabel)
-
@apollon77 said in Test ioBroker unter Windows installieren - 2022 Edition:
muss erst was auf windows dafür aufsetzen.
Wenn morgen das Wetter wieder so mies ist, könnte ich anbieten das mal anzuschauen. Ich kann das Problem ja gerade so schön reproduzieren. Versprechen kann ich allerdings nix.
Und nochmal ganz was anderes:
Der eigentliche MSI Teil des neuen Windows Installers macht inzwischen ja nicht mehr soooo viel. Vieles, was der "alte" Installer noch mühsam erledigen musste, ist jetzt ja in die node Installationsroutinen geflossen.Evtl. könnte man doch nochmal drüber nachdenken, ob wir den Gedanken des alten Installers wieder aufleben lassen. Die Idee war ja zuletzt, soweit ich das mitbekommen habe, dass der Installer keine eigenen Pakete mitbringt, sondern alles anhand von aktuellen Empfehlungen zur Laufzeit herunterlädt und installiert bzw. aktualisiert. Sofern man die Ports bei den node installationsroutinen mitgeben könnte, könnte man sogar wieder den Multi-Instanz-Ansatz ins Auge fassen, in dem jede Instanz ihre eigene node.js Runtime Installation hat.
Ich will jetzt niemandem reingrätschen, aber wenn Interesse besteht, könnte ich in nächster Zeit mal ein paar Dinge ausprobieren. Aber auch hier gilt natürlich: Ich kann nix versprechen, evtl. unterschätze ich die Thematik auch.
-
@apollon77 said in Test ioBroker unter Windows installieren - 2022 Edition:
Und auch nicht wie ich npm die "logausgaben" entlocken kann aber das ist an sich Themenfremd hier ...
Fu hast nicht zufällig einen Link zum passenden Thread? Ich finde ihn leider nicht.
-
@gaspode War glaube hier mit drin https://forum.iobroker.net/topic/60172/test-iobroker-fixer-mit-jsonl-compression
-
@gaspode sagte in Test ioBroker unter Windows installieren - 2022 Edition:
Die Idee war ja zuletzt, soweit ich das mitbekommen habe, dass der Installer keine eigenen Pakete mitbringt, sondern alles anhand von aktuellen Empfehlungen zur Laufzeit herunterlädt und installiert bzw. aktualisiert.
Das waren aber auch andere Zeiten. Inzwischen braucht node.js auf Windows meistens weniger kram bzw es ist schon mit nodejs das relevante mit gekommen. Als müsste man schauen was man ausser node.js heutzutage auf Windows noch so braucht
-
@codierknecht sagte in Test ioBroker unter Windows installieren - 2022 Edition:
Da bei mir ja die Ports bereits verwendet werden, kümmere ich mich dann gleich auch mal um die Erkennung der Ports.
Dazu auch 'ne Frage: Soll - wenn festgestellt wird dass die Ports bereits verwendet werden - der Installer
a) nach den zu nutzenden Ports fragen?
b) selbständig freie Ports suchen und diese verwenden?
c) nur eine Meldung bringen und die Installation abbrechen
Ich würde hier zu b) tendieren, da gerade Einsteiger bereits überfordert sein könnten.Bin kein Spezialist und nur interessierter Laie sowie Anwender. Habe damit nichts zu sagen, aber dennoch eine Meinung:
-
Eine Standardkonfiguration mit Standard-Ports ist aus meiner Sicht eine wertvolle Sache, die es wert ist anzustreben
-
Die Belegung der Ports ist ja ein vom Intel Graphiktreiber eingeschlepptes Problem, welches sich zumindest auf meinen Rechner immer folgenlos durch Deaktivierung des entsprechenden Dienstes hat behen lassen. Da ich die Historie kenne, befindet sich das Thema in meinen Notizen und wird bei mir vor Beginn der Installation geprüft und bereinigt. Dies kann aber sicher nicht vorausgesetzt werden
Ich würde also folgendes Vorgehen begrüßen:
- Tests auf Portbelegung
- Falls die Kollision erkannt wird
- Ermittlung von möglichen Ersatzports
- Unterbrechung der Installation mit Dialog
- Anbieten der Alternative 1: die Installation abzubrechen, damit der Intel-Dienst vom Anwender deaktiviert werden kann
- Anbieten der Alternative 2: die Installation mit den gefundenen und angebotenen Ports fortzusetzen
Vielen Dank für den neuen Schwung beim Windows Installer.
Viele mögliche Anwender haben noch irgendwo einen Win Rechner, mit dem sie ioBroker dann niederschwellig testen können.
-
-
@gaspode
Jupp, der alte Installer war mir lieber wegen der Mehrfach Installation. -
@apollon77 sagte in Test ioBroker unter Windows installieren - 2022 Edition:
Also müsste man schauen, was man ausser node.js heutzutage auf Windows noch so braucht
Bei meiner letzten Installation (November 2022) hat der RFLink Adapter anscheinend wegen der seriellen Schnittatelle ziemlich gebockt und einiges zusätzlich gebraucht:
https://forum.iobroker.net/topic/60173/rflink-auf-win-rechner-cannot-find-adapter-rflink-2-1-6- Python 3 mit Pfaden
- Visual Studio
- Dazu noch Plugins (Workloads)
- Windows SDK
Mag sein, daß ein Experte das hätte besser und eleganter lösen können. Ich habe halt nur die referenzierten Logs ausgewertet und versucht eine Aktion daraus abzuleiten.
Der ESPHome Adapter hat gar nicht mehr compiliert. Das war aber zu Beginn des ESPHome Adapter Entwicklung leider auch schon so.
Also ESPHome-Geräte auf MQTT umgestellt. Nicht schön, ist halt so und funktioniert. -
@gaspode sagte in Test ioBroker unter Windows installieren - 2022 Edition:
Evtl. könnte man doch nochmal drüber nachdenken, ob wir den Gedanken des alten Installers wieder aufleben lassen. Die Idee war ja zuletzt, soweit ich das mitbekommen habe, dass der Installer keine eigenen Pakete mitbringt, sondern alles anhand von aktuellen Empfehlungen zur Laufzeit herunterlädt und installiert bzw. aktualisiert. Sofern man die Ports bei den node installationsroutinen mitgeben könnte, könnte man sogar wieder den Multi-Instanz-Ansatz ins Auge fassen, in dem jede Instanz ihre eigene node.js Runtime Installation hat.
Ja, das wäre wirklich top! Der Multi-Instanzen Ansatz war richtig gut, Gerade bei den upgrades. Wenn es nichts geworden ist (und das scheint ja nicht Win spezifisch zu sein), konnte man leicht wieder zurück.
Auch die Kollision der Ports wurde erkannt und behandelt.
-
@klassisch
Bei mir war nicht Intel sondern mein CI-Server und seine Postgres-DB der Schuldige.
Mit NPM bzw. NPX habe ich Null Erfahrung. Im ersten Ansatz wird‘s wohl darauf hinauslaufen, die belegten Ports zumindest zu erkennen und auf das Problem hinzuweisen.Und ich gebe Dir Recht: Standardports wären auf jeden Fall besser. Denn früher oder später wird ein Einsteiger auf ein Problem stoßen, sich im Forum melden und dort ggf. Port 9000/9001 genannt bekommen. Dass er aber andere einsetzt, ist ihm dann vermutlich gar nicht mehr bewusst.
Auch den Einsatzzweck unter Windows sehe ich ähnlich. Ein Produktivsystem würde ich (inzwischen) nicht mehr unter Windows betreiben wollen.
-
@codierknecht sagte in Test ioBroker unter Windows installieren - 2022 Edition:
Vielen Dank für Deinen Einsatz!Auch den Einsatzzweck unter Windows sehe ich ähnlich. Ein Produktivsystem würde ich (inzwischen) nicht mehr unter Windows betreiben wollen.
Läuft bei mir seit Jahren stabil. Angenehm gewohnt in der Wartung und der Rechner macht noch andere Dinge für mich als zentales 24/7 System.
Als es noch Win Home Server gab, betrieb ich einen. War so stabil wie meine Synology - wenn man die Teile in Ruhe gelassen hat.