Как обнаружить распространяемый VC ++ 2008? - PullRequest
31 голосов
/ 15 октября 2008

Есть ли параметр реестра, который я могу найти, чтобы определить, установлен ли распространяемый Visual C ++, автономный или как часть Visual Studio 2008? Я знаю, что мог бы запустить распространяемый установщик VC ++ 2008 и позволить ему обрабатывать обнаружение, но он выглядел бы чище, если бы я мог его проверить, и не стал бы запускать установщик, если распространяемый уже есть в системе.

Нет ничего страшного, если нет настроек для поиска, поскольку это только для предварительных установщиков, которые у нас есть для новой версии нашего программного обеспечения. Он нам не понадобится для новых установщиков на основе установщика Windows, над которыми мы работаем, которые заменит старые технические и будут использовать модули слияния.

Ответы [ 13 ]

0 голосов
/ 14 октября 2009

Я хотел бы расширить список GUID следующими значениями:

32 бит 30729,17
{9A25302D-30C0-39D9-BD6F-21E6EC160475}
32 бита 30729.01
{6AFCA4E1-9B78-3640-8F72-A7BF33448200}
64 бит 30729,17
{8220EEFE-38CD-377E-8595-13398D740ACE}
64bit 30729.01
{0DF3AE91-E533-3960-8516-B23737F8B7A2}
VC ++ 2008 (sp1)
{3C3D696B-0DB7-3C6D-A356-3DB8CE541918}
VC ++ 2008 (оригинал)
{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}
IA64 30729.01
{22E23C71-C27A-3F30-8849-BB6129E50679}
32 бита 30729,4148
{7B33F480-496D-334a-BAC2-205DEC0CBC2D}
Visual Studio 2008 Professional SP1
{D7DAD1E4-45F4-3B2B-899A-EA728167EC4F}
32 бита 30729.01
{F333A33D-125C-32A2-8DCE-5C5D14231E27} * +1022 *

Поэтому, пожалуйста, решите, стоит ли проверять наличие VCredist по GUID.

0 голосов
/ 30 апреля 2009

Найдена запись реестра для распространяемого VC2008. Вот мое решение:

BOOL IsVC2008RedistInstalled(LPCTSTR pLogFile)
{
    TCHAR szLogEntry[256];
    memset(szLogEntry, '0', sizeof(szLogEntry));
    HKEY hKey;
    LONG lErr;

    TCHAR csid[256];
    _stprintf( csid, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{9A25302D-30C0-39D9-BD6F-21E6EC160475}"));
    lErr = RegOpenKeyEx(HKEY_LOCAL_MACHINE, csid, 0, KEY_QUERY_VALUE, &hKey);
    if (lErr == ERROR_SUCCESS)
    {
    _stprintf(szLogEntry, _T("VC2008 Redistributable was installed before.\n"));
    toFile(pLogFile, szLogEntry);
    return TRUE;
    }
    else
    {
    _stprintf(szLogEntry, _T("VC2008 Redistributable was not installed before. %ld\n"), lErr);
    toFile(pLogFile, szLogEntry);
    return FALSE;
    }
}
0 голосов
/ 15 октября 2008

Вы можете проверить файлы в каталоге WINDOWS \ WinSxS, чтобы увидеть, какие версии вы установили. Зачастую многие версии могут быть установлены одновременно, поэтому вам может потребоваться проверить конкретные версии, которые вы установили.

...