Wie kann ich programmgesteuert feststellen, ob Visual C ++ Runtime 8.0 installiert ist?

8

Ich habe eine InstallShield-Installation, die benutzerdefinierte Aktionen verwendet, die von der Visual C ++ Runtime 8.0 SP1 abhängen. In der Vergangenheit konnte ich die Runtime mit dem Merge-Modul von Microsoft mit Visual Studio installieren. Basierend auf der Art und Weise, wie die Visual C ++ Runtime 8.0 SP1-Seite-an-Seite-Installation unter Vista funktioniert, kann die Laufzeitumgebung erst nach der Festschreibungssequenz der Installation verwendet werden.

Das bedeutet, dass ich entweder die Ausführung meiner benutzerdefinierten Aktionen in die Commit-Sequenz verschieben muss (unerwünscht, da die Installation während dieser Sequenz nicht rückgängig gemacht werden kann, wenn etwas schief geht) oder die Visual C ++ - Laufzeit vor der Installation mit installiere eine InstallShield-Voraussetzung.

Ich würde es vorziehen, die Visual C ++ Runtime als Voraussetzung zu installieren, aber eine Voraussetzung dafür wird nicht von InstallShield bereitgestellt, also musste ich meine eigene schreiben. Ich konnte herausfinden, wie man die Voraussetzung für die Installation der Runtime konfiguriert, aber ich weiß nicht, wie ich feststellen kann, ob sie bereits installiert ist. Gibt es einen Registrierungsschlüssel oder eine Dateiversion, die ich überprüfen kann, um dies festzustellen?

    
Kevin Kibler 19.02.2009, 17:11
quelle

1 Antwort

10

Ich habe Blog-Posts gefunden, in denen beschrieben wird, dass Visual C ++ Runtime 8.0 und Visual C ++ Runtime 8.1 . Grundsätzlich können Sie mit dem MSI Automation Interface nach den Produktcodes für die einzelnen Laufzeiten suchen.

Sie können auch nach HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductCode] suchen, wobei [ProductCode] der Produktcode für die Laufzeit ist, die Sie ermitteln möchten (z. B. . {7299052b-02a4-4627-81f2-1818da5d550d} ist der Produktcode für die x86-Version der 8.0 sp1-Laufzeitumgebung.

Diese Methoden funktionieren nur, um festzustellen, ob das Laufzeit-Redistributable-Paket installiert ist. Es ist möglich, dass die Laufzeit installiert wird, selbst wenn diese Methoden dies nicht angeben (z. B. wenn sie als Merge-Modul installiert wurde, statt die Weitervertreibbaren zu verwenden), aber in diesem Fall nichts schaden sollte, um das Redistributable-Paket zu installieren .

    
Kevin Kibler 20.02.2009, 15:11
quelle