8

Mam instalację InstallShield, która używa działań niestandardowych, które zależą od programu Visual C++ Runtime 8.0 sp1. W przeszłości mogłem zainstalować środowisko wykonawcze przy użyciu modułu scalania dostarczonego przez Microsoft z Visual Studio. W oparciu o sposób, w jaki działa instalacja bezpośrednia programu Visual C++ Runtime 8.0 sp1 w systemie Vista, środowiska wykonawczego nie można używać do czasu zatwierdzenia sekwencji instalacji.Jak programowo ustalić, czy zainstalowany jest program Visual C++ Runtime 8.0?

Oznacza to, że muszę albo przenieść wykonywanie moich niestandardowych akcji do sekwencji zatwierdzania (niepożądane, ponieważ instalacja nie może zostać wycofana podczas tej sekwencji, jeśli coś pójdzie nie tak) lub zainstalować środowisko wykonawcze Visual C++ przed moją instalacją przy użyciu wstępnego wymagania programu InstallShield.

Wolałbym zainstalować środowisko wykonawcze Visual C++ jako warunek wstępny, ale warunek wstępny tego nie jest dostarczany przez InstallShield, więc musiałem napisać własne. Udało mi się ustalić, jak skonfigurować wymagania wstępne, aby zainstalować środowisko wykonawcze, ale nie wiem, jak ustalić, czy jest już zainstalowany. Czy istnieje klucz rejestru lub wersja pliku, którą mogę sprawdzić, aby to ustalić?

+0

Dla każdego, kto próbuje wykryć środowisko wykonawcze Visual C++ 2010, można znaleźć dobre instrukcje tutaj: http://blogs.msdn.com/b/astebner/archive/2010/05/05/10008146.aspx – ephere

Odpowiedz

10

Znalazłem wpisy na blogu opisujące wykrywanie Visual C++ Runtime 8.0 i Visual C++ Runtime 8.1. Zasadniczo można użyć interfejsu automatyzacji MSI, aby wyszukać kody produktów dla każdego środowiska wykonawczego.

Można również spojrzeć na HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductCode] gdzie [ProductCode] jest kod produktu dla środowiska wykonawczego starasz się wykryć (np. {7299052b- 02a4-4627-81f2-1818da5d550d} to kod produktu dla wersji 8.0 środowiska wykonawczego 8.0 SP1).

Te metody działają tylko w celu wykrycia, czy pakiet redystrybucyjny środowiska wykonawczego jest zainstalowany; możliwe jest, że środowisko uruchomieniowe jest zainstalowane, nawet jeśli metody te nie wskazują tego (np. jeśli został zainstalowany jako moduł scalający zamiast używania redystrybucji), ale nie powinno to zaszkodzić, aby zainstalować pakiet redystrybucyjny w tym przypadku .