Как программно определить, установлен ли Visual C ++ Runtime 8.0? - PullRequest
8 голосов
/ 19 февраля 2009

У меня есть установка InstallShield, в которой используются настраиваемые действия, зависящие от среды выполнения Visual C ++ 8.0 sp1. В прошлом мне удавалось устанавливать среду выполнения с помощью модуля слияния, предоставленного Microsoft вместе с Visual Studio. Основываясь на том, как параллельная установка Visual C ++ Runtime 8.0 sp1 работает в Vista, среда выполнения не может использоваться до тех пор, пока не будет завершена последовательность установки.

Это означает, что я должен либо переместить выполнение своих пользовательских действий в последовательность фиксации (нежелательно, так как установка не может быть отменена во время этой последовательности, если что-то пойдет не так), либо установить среду выполнения Visual C ++ до моей установки, используя предварительное условие InstallShield.

Я бы предпочел установить Visual C ++ Runtime в качестве предварительного условия, но необходимое условие для этого не предусмотрено InstallShield, поэтому мне пришлось написать свое собственное. Мне удалось выяснить, как настроить предварительные условия для установки среды выполнения, но я не знаю, как определить, установлена ​​ли она уже. Могу ли я проверить ключ реестра или версию файла, чтобы определить это?

1 Ответ

10 голосов
/ 20 февраля 2009

Я нашел сообщения в блоге, описывающие обнаружение Visual C ++ Runtime 8.0 и Visual C ++ Runtime 8.1 . По сути, вы можете использовать интерфейс автоматизации MSI для поиска кодов продуктов для каждой среды выполнения.

Вы также можете найти HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductCode] , где [ProductCode] - код продукта для среды выполнения, которую вы пытаетесь обнаружить (например, {7299052b-02a4-4627-81f2-1818da5d550d} - это код продукта для версии x86 среды выполнения 8.0 sp1).

Эти методы работают только для определения, установлен ли распространяемый пакет среды выполнения; Вполне возможно, что среда выполнения установлена, даже если эти методы не указывают на это (например, если она была установлена ​​как модуль слияния вместо использования распространяемого), но в этом случае ничто не должно помешать установке распространяемого пакета .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...