Как обнаружить VC ++ распространяемый файл 2008 года?

Для окон Пользователь использует эту партию

echo off
setlocal enabledelayedexpansion
FOR %%f IN ("*.csv") DO (
  set old=%%~dpnxf
  set new=!old:\=\\!
  mysql -e "load data local infile '"!new!"' IGNORE into table email_us.business  COLUMNS TERMINATED BY ','" -u root
  echo %%~nxf DONE
)
  • email_us -> DB
  • business -> Таблица
  • IGNORE -> Игнорировать дублируемую вставку и при ошибке продолжайте
  • ~ dpnxf -> d для буквы диска, p для пути к файлу, n для имени файла, x для расширения и f - это переменная файла

Шаги: - Поместите этот командный файл в каталог, где все несколько файлов csv существуют, и назвали его как something.bat - запустите cmd.exe как администратор и вызовите этот файл something.bat и наслаждайтесь импортом ...

31
задан Aardvark 24 October 2008 в 16:01
поделиться

9 ответов

Проверьте реестр:

VC ++ 2008 (sp1): HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{3C3D696B-0DB7-3C6D-A356-3DB8CE541918}

или

VC ++ (исходный) 2008: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}

16
ответ дан 27 November 2019 в 22:15
поделиться

Быстрый и грязный:

if (LoadLibrary(L"msvcrt80.dll")!=NULL)
{
  // it is installed
}

Loadlibrary обработает поиск путей для Вас.

5
ответ дан 27 November 2019 в 22:15
поделиться

выглядит как другое решение , предложенное Microsoft-Developer с использованием MsiQueryProductState API , увы, также основанное на GUID.

Обновление : код был запущен вчера и, кажется, работает нормально , Вот что делается: проверяется последний из известных мне GUID и путь к тому, где он должен быть установлен. Если оба сбоя, он установлен. Кажется, это работает нормально.

Кроме того, он устанавливается с аргументами командной строки «/ qb», что означает «оставленный без присмотра, но не невидимый». См. этот другой пост в блоге об этих параметрах.

FWIW, GUID для Microsoft Visual C ++ 2008 / VC90 SP1, распространяемый - x86 9.0.30729

  • 64bit 30729.17: $ WINDIR \ WinSxS \ x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729 *

4
ответ дан 27 November 2019 в 22:15
поделиться

Проверьте на $WINDIR\WinSxS\x86_Microsoft.VC90.CRT_*, если, например, Вы проверяете на распространяемый файл Visual Studio 2008 года.

2
ответ дан 27 November 2019 в 22:15
поделиться

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

0
ответ дан 27 November 2019 в 22:15
поделиться

Найдена запись реестра для распространяемого 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
ответ дан 27 November 2019 в 22:15
поделиться

Update for anyone else hitting this problem:

1) If you have Visual Studio installed, the required DLLs will be present, but the "redist package" is not, so the registry keys are missing. (i.e. this will give a false negative). However, installing the redist over the top in this situation is harmless.

2) Every major release of the redist (Any combination of VS2005/VS2008, x86/x64/IA64, and service packs: SP1,ATL security update) has a different GUID. Take care if you are expecting to deploy your application on both x86 and x64 PCs.

3) If you use LoadLibrary or a check for Dll files, make sure you target the correct version. If you look for "any" copy of msvcrt80.dll (etc) then you won't be able to tell if it is the version your program was linked to.

1
ответ дан 27 November 2019 в 22:15
поделиться

Я хотел бы расширить список 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}
64-битная 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}

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

0
ответ дан 27 November 2019 в 22:15
поделиться

Я не думаю, что какое-либо из этих решений может помочь при использовании другой ОС! Например, MsiQueryProductState всегда будет возвращать -1 при использовании Vista VC8.0

и -1 для VC8.0 / 8.0 SP1 / 9.0 в Windows 7! Таким образом, решение GUID, предоставленное Microsoft, работает не во всех случаях

, поэтому я полагаю, что я вынужден придерживаться подхода% windir% \ winsxs и искать

  • x86_Microsoft.VC80.CRT *
  • x86_Microsoft.VC90.CRT *

Для тех, кто ищет все идентификаторы GUID, вот список, который я создал:

Файлы среды выполнения Visual C ++ 2005

* VC 8.0 (x86) - {A49F249F-0C91-497F-86DF-B2585E8E76B7}
* VC 8.0 (x64) - {6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}
* VC 8.0 (ia64) - {03ED71EA-F531-4927-AABD-1C31BCE8E187}

Файлы среды выполнения Visual C ++ 2005 SP1

* VC 8.0 SP1 (x86) - {7299052B-02A4-4627-81F2-1818DA5D550D}
* VC 8.0 SP1 (x64) - {071C9B48-7C32-4621-A0AC-3F809523288F}
* VC 8.0 SP1 (ia64) - {0F8FB34E-675E-42ED-850B-29D98C2ECE08}

Visual C ++ 2005 SP1 ATL Файлы среды выполнения обновления безопасности

* VC 8.0 SP1 ATL Patch (x86) - {837B34E3-7C30-493C-8F6A-2B0F04E2912C}
* VC 8.0 SP1 ATL Patch (x64) - {6CE5BAE9-D3CA-4B99-891A-1DC6C118A5FC}
* VC 8.0 SP1 ATL Patch (ia64) - {85025851-A784-46D8-950D-05CB3CA43A13}

Файлы среды выполнения Visual C ++ 2008

* VC 9.0 (x86) - {FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}
* VC 9.0 (x64) - {350AA351-21FA-3270-8B7A-835434E766AD}
* VC 9.0 (ia64) - {2B547B43-DB50-3139-9EBE-37D419E0F5FA} 

Файлы среды выполнения Visual C ++ 2008 SP1

* VC 9.0 SP1 (x86) - {9A25302D-30C0-39D9-BD6F-21E6EC160475}
* VC 9.0 SP1 (x64) - {8220EEFE-38CD-377E-8595-13398D740ACE}
* VC 9.0 SP1 (ia64) - {5827ECE1-AEB0-328E-B813-6FC68622C1F9}

Файлы среды выполнения обновления безопасности Visual C ++ 2008 SP1 ATL

* VC 9.0 SP1 ATL (x86) - {1F1C2DFC-2D24-3E06-BCB8-725134ADF989}
* VC 9.0 SP1 ATL (x64) - {4B6C7001-C7D6-3710-913E-5BC23FCE91E6}
* VC 9.0 SP1 ATL (ia64) - {977AD349-C2A8-39DD-9273-285C08987C7B}
19
ответ дан 27 November 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: