AKInstaller      
Erste Schritte - Teil4: Datensuchen

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.




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 Datenbasierend sondern Komponentenbasierend. 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 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 .