ich bin immer noch überrascht wieviel Handarbeit es bedeutet bestimmte Sache für die Software-Verteilung auszulesen.
Aktueller Fall: Die Updates von Autodesk Inventor 2019.
Wir setzen im Unternehmen auf die Konstruktionssoftware Inventor von Autodesk. Aktuell nutzen wir noch Version 2019. Die Services Packs installieren sich klassisch unter Software. Also Inventor z.B. 2019.4. Die kleinen Updates werden allerdings als MSP-Datei verteilt und werden von Windows unter Installierte Updates aufgeführt.
ACMP scheint aber nur die reinen Windows-Updates auszulesen und Drittanbieter-Updates zu ignorieren. Ich habe also aktuelle keine Möglichkeit auszulesen, ob Inventor 2019.4.0, 2019.4.1, ... installiert ist.
Will mir jetzt mit benutzerdefinierten Felder helfen und die genaue Version aus der Registry auslesen.
Autodesk speichert die Versionsnummer im Pfad HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\Inventor\RegistryVersion23.0 Die Basisversion wird unter ProductVersion (23.40.33000.0000) gespeichert und für jedes Updates wird ein Eintrag MinorVersion23* erstellt. Also Inventor 2019.4.4 erstellt z.B. den Eintrag MinorVersion23440 mit dem Wert 23.40.33000.440.
Meine Idee war, den ProductVersion-Eintrag auszulesen und die MinorVersion23*-Einträge durchzugehen und die höchste Versionsnummer am Ende zu speichern. Ich habe es am Ende auch hinbekommen, aber es war ziemliches gefrickel.
1. Problem
Warum unterstützt If ... Then kein LIKE? Da ich beim Durchlaufen der Registry keinen Filter angeben kann, muss ich in der Schleife überprüfen ob der Wertename das Format MinorVersion23* hat. Ein If Variable Like "MinorVersion23%" wäre das einfachste. Geht aber nicht. Alternative ging vielleicht auch ein String.StartsWith, was es aber nicht gibt. Kürze den Namen jetzt auf 14 stellen und mache dann einen Vergleich mit =. Irgendwie uncool.
2. Problem
Versionsnummern vergleichen. Musste mir mit VBS jetzt was bauen, was zwei Versionsnummern vergleicht. Da der Befehl If file version is Versionsnummer vergleicht müsste es intern dafür ja Quelltext geben. Mit dem Quelltext könnten man doch vielleicht eine Funktion Compare Version Strings bauen?
Wünsche
Hier noch mal meine Wünsche zusammengefasst:
- If ... Then mit LIKE
- Funktion String Starts With
- Funktion String Ends With
- Funktion Compare Version Strings