Erste Schritte - Teil4: Datensuchen

Antworten
Volker
Beiträge: 37
Registriert: 08.07.2022, 09:25

Erste Schritte - Teil4: Datensuchen

Beitrag von Volker »

Das Suchen nach bestimmten Voraussetzungen ist ein wichtiger Punkt bei Installationen.
Was nützt ein Setup für eine Office-AddOn, wenn das Office gar nicht auf dem Rechner ist?

Oder das besagte AddOn ist für verschieden Office-Versionen vorhanden und es muss festgestellt
werden, um welches Office es sich handelt. Solche Dinge müssen beim Start des Setup ermittelt werden.

Bild

Schauen wir uns den Dialog für die Datensuche also einmal genauer an, es gibt auf den ersten Blick ein
Feld für eine Eigenschaft die das Ergebnis der Suche aufnimmt und diverse Arten der Suche.

Erst wenn Sie sich für eine dieser Arten entschieden haben, werden weitere Felder angeboten um die
nötigen Einstellungen zu tätigen.


MSI - Daten:
Die ersten drei, ProductCode, UpgradeCode und Komponenten-GUID zielen auf MSI-Installationen
ab und erwartet alle drei eine GUID mit dem Aufbau {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX},
wobei jedes X für folgende Werte stehen kann: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.

GUIDs sind nicht frei erfunden, sondern müssen durch Systemroutinen erstellt werden und Windows
Installer-GUIDs verwenden Großbuchstaben.

Der ProductCode kann sich ändern, wenn bestimmte Daten im MSI geändert wurden oder es ein neues
Majorupdate gibt. Also Version 2.0 statt 1.0.

Der UpgradeCode ändert sich im Allgemeinen über den gesamten Lebensraum einer Anwendung hinweg nicht.

Die Komponenten-GUID ändert sich für eine Datei oder einen Wert in der Registry nur, wenn sich der Ablageort oder
Pfad ändert. Also eine Datei von INSTALLDIR nach SYSTEM verschoben wird oder der Dateiname sich ändert.

MSI ist nicht wie der AKInstaller Daten basierend sondern Komponenten basierend. Eine Komponente kann durchaus
aus 3 Dateien und 10 Registry-Keys bestehen und diversen anderen Einstellungen.

Komponenten haben meist immer eine/n Key-Wert/Datei. Dieser Key wird bei der Suche ermittelt. Ist es eine Datei,
wird der Pfad der Datei gefunden, ist es ein Registry-Wert, dann der Wert bzw. der Pfad.

Mit diesen drei Arten können über MSI-Funktionen Produkte und Pfade ermittelt werden.

Die Suche Registrypfad:Dies ist die geläufigste Art. Hier kann nach einem Datei- oder Ordnerpfad der in der
Registry abgelegt wurde gesucht werden. Im Falle eines Ordner kann über Datei noch ein Dateiname an den gefunden
Pfad angehängt werden.

Bekannter Dateipfad ist fast selbsterklärend. Man gibt z. B. <PROGRAMDIR>\App\Prg.exe an und die Datei
wird gefunden oder eben nicht.

Dateipfad ermöglicht es, ab einem bestimmten Punkt nach einer Datei zu suchen, wobei Suchtiefe angibt wie
viele Unterordner-Ebenen durchsucht werden sollen.

Die Suche in einer Ini-Datei muss wohl nicht weiter erklärt werden.

Auswertung:

Je nachdem was gesucht wird werden diverse zusätzliche Eigenschaften gesetzt. Neben dem immer vorhanden
RESULT z. B. auch RESULT_SIZE, RESULT_VALUE oder RESULT_VERSION.


In Auswertung finden wir als Vorgabe [RESULT], in unsere oben angegebene Eigenschaft wird das Ergebnis
von RESULT übergeben.

Dies lässt sich natürlich auch kombinieren.
Beispiel: Die Datei wurden gefunden in [RESULT] und hat eine Größe von [RESULT_SIZE] und die Version [RESULT_VERSION].

Man kann auch zwei Datensuchen aufeinander aufbauen.

Beispiel:
Es wird gesucht in HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications\AKInstaller
und das Ergebnis SOFTWARE\AKApplications\AKInstaller4x\Capabilities\ wird gespeichert in VarCapabilities

Und in der zweiten Suche wird der Pfad kombiniert zu HKEY_LOCAL_MACHINE\[VarCapabilities]\ApplicationName .
Mit freundlichen Grüßen,
AKApplications, Volker J.
Antworten