Modulversion ermitteln

Hi,

ich möchte gerne im Debug auch die Version des installierten Moduls ausweisen.

Dazu ermittele ich zum Create() die Version aus der Librarv.json und schreibe sie zum schnelleren und einfacheren Zugriff in ein Attribut.

Das mache ich mit folgendem Dreizeiler:

        $library       = json_decode(file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'library.json'), true);
        $this->RegisterAttributeString('Version', '');
        $this->WriteAttributeString('Version', sprintf('%s.%s', $library['version'], $library['build']));

Leider funktioniert das nicht zuverlässig. Es erscheint so, als ob beim Modulupdate die Version nicht korrekt ermittelt wird. Zumindest wird im Debug eine ältere Version protokolliert.

Mache ich da etwas falsch oder gibt es da Besonderheiten zu beachten?

Hallo
Ich nehme dazu die Funktion

https://www.symcon.de/service/dokumentation/befehlsreferenz/modulverwaltung/ips-getlibrary/

Hallo,

das habe ich auch schon mehrmals bemerkt. Beim letzten Update habe ich danach mit Modul „erneut installieren“ die richtige Version angezeigt bekommen.
das scheint dann ja nicht an der Abfrage zu liegen.

Hm. Das ist natürlich sehr kurios. Hast du mal ein IPS_LogMessage versucht einzubauen?

Die Datei auf der Festplatte muss auf jeden Fall aktuell sein, da wir die aktualisieren bevor wir das Create() aufrufen :slight_smile:

paresy

Oh, die Funktion war mir entfallen. Auch eine (elegantere :slight_smile:) Möglichkeit.

Noch nicht. Werde ich jetzt mal machen.

Ja, dem ist auch so. Und auch bei IPS_LogMessage wird die korrekte Version in LogFile geschrieben.

Ich habe jetzt mit MC_ReloadModule gestestet und es sieht so aus, als ob der Create() zwar durchlaufen wird, aber ein enthaltener WriteAttributeString() wirkungslos ist.

Wenn dagegen der Service neu gestartet wird, dann wird ebenfalls der Create() durchlaufen und der WriteAttributeString schreibt dann auch den Wert weg.

Burkhard

@paresy: gibt es hier schon etwas Neues?

Ich habe mir das Problem genauer angesehen und leider kann ich da nichts machen. Die Attribute werden erst nach Create initialisiert. D.h. wenn du im Create was schreibst, dann wirst dies beim Laden aus der Persistenz überschreiben. Warum es bei dir ab und zu geht: Wenn initial nichts in der Persistenz ist, wird auch nichts überschrieben.

Ich werde in die Doku entsprechend einen Hinweis hinzufügen und würde zur 6.1 auch passende Fehlermeldungen werfen, sobald man die Funktionen (Lesen ist auch nicht wirklich sinnvoll) nutzen will.

paresy

Ok.

Du meinst „Schreiben“, oder?

Ich werde es dann demnächst umbauen.

Ich meine beides. Lesen und Schreiben ist im Create nicht wirklich gut, da komisch Dinge passieren, wenn man nicht genau weiß, was da passiert :slight_smile: (Beim Lesen hast du eigentlich immer den Default Wert)

paresy