문제

나는 매우 비슷한 질문이 있습니다 이 하나 그러나 대답은 저에게 효과가 없습니다.

소프트웨어 설정을 유지 관리하는 것은 VC ++ 2008 (SP1, 정확하게)에 따라 다르므로 아직 설치되지 않은 경우 vcredist를 설치할 수있는 솔루션을 찾아야합니다. 나는 올바른 방법은 병합 모듈로 MSI를 구축하는 것이지만 내 손에 있지는 않습니다.

내가 언급하는 중복 질문의 답변 (수락 된 것)은 모든 작은 릴리스 (예 : 9.0.30729.01 vs 9.0.30729.17)가 적절한 지침을 가지고 있기 때문에 나에게 효과가 없습니다. . 또한, 이것이 Visual Studios를 감지하지 않으므로 이미 개발자 기계에있을 때 Vcredist 패키지를 불필요하게 설치할 것이라고 생각합니다. 나는 이것으로 누군가를 버그하고 싶지 않으며, 이미 Devstudio가 설치된 사람은 아닙니다.

이제 또 다른 대답 $WINDIR\WinSxS\x86_Microsoft.VC80.CRT_ 그러나 이것은 아직 SP1을 암시하는 데 도움이되지 않거나이 시점에서 내가 놓친 것이 있습니까? 내부 및 "외부"버전 번호가있는 테이블이 있으므로 특정 사소한 버전 번호를 암시 할 수 있습니까?

이 시나리오에 대해 Microsoft가 제공하는 것은 없다고 믿을 수는 없지만 이미 너무 오래간 인터 웹을 검색하면 이제 좋은 ol '로 돌아갑니다. :)

도움이 되었습니까?

해결책

DirectX 설치를 위해 권장되는 접근 방식을 취할 수 있습니다. 항상 재분배 가능하게 실행하십시오. 필요하고 이미 배송되므로 이미 설치되어 있어도 실행하는 데 아무런 해가 없습니다.

다른 팁

Visual Studio C ++ 2010의 경우 상황이 조금 쉬워졌습니다.

Visual C ++ 2005 및 2008 재배포 가능한 패키지와 달리 Visual C ++ 2010 재배포 가능한 패키지의 존재를 감지하는 데 사용할 수있는 레지스트리 키가 있습니다.

Visual C ++ 2010 재배포 가능한 패키지 감지 레지스트리 값

Visual C ++ 2010 재배포 가능 패키지 (x86)

hkey_local_machine Software Microsoft VisualStudio 10.0 vc vcredist x86] 설치 = 1 (reg_dword)

Visual C ++ 2010 재배포 가능 패키지 (x64)

hkey_local_machine Software Microsoft VisualStudio 10.0 vc vcredist x64] 설치 = 1 (reg_dword)

Visual C ++ 2010 재분배 가능 패키지 (IA64)

hkey_local_machine Software Microsoft VisualStudio 10.0 vc vcredist ia64] 설치 = 1 (reg_dword)

메모: 64 비트 OS에서 WOW6432NODE에서 확인해야합니다. (hklm 소프트웨어 wow6432node microsoft ....)

이전 버전을 좋아한다면 여기에 Guids가 있습니다.

Visual C ++ 2010 재배포 가능한 패키지 제품 코드

  • Visual C ++ 2010 재배포 가능한 패키지 (X86)-{196BB40D-1578-3D01-B289-BEFC77A11A1E}
  • Visual C ++ 2010 재배포 가능한 패키지 (X64)-{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}
  • Visual C ++ 2010 재배포 가능한 패키지 (IA64)-{C1A35166-4301-38E9-BA67-02823AD72A1B}

Visual C ++ 2010 SP1 재배포 가능한 패키지 제품 코드

  • Visual C ++ 2010 SP1 재배포 가능한 패키지 (X86)-{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}
  • Visual C ++ 2010 SP1 재배포 가능한 패키지 (X64)-{1D8E6291-B0D5-35EC-8441-6616F567A0F7}
  • Visual C ++ 2010 SP1 재배포 가능한 패키지 (IA64)-{88C73C1C-2DE5-3B01-AFB8-B46EF4B41CD}

거기있는 것 같습니다 또 다른 해결책 Microsoft 개발자가 제안한 사용 MsiqueryProductState API, 아아는 또한지도에 의존합니다.

업데이트: 코드는 어제 실시간으로 잘 작동하는 것 같습니다. 다음은 꿀벌이 완료되었습니다. 최신 알려진 ME Guid와 경로가 어디에서나 설치 될 예정인지 확인합니다. 두 가지 모두 실패하면 설치됩니다. 이것은 잘 작동하는 것 같습니다.

또한, "무인이지만 보이지 않는"을 의미하는 명령 줄 인수 "/QB"와 함께 설치됩니다. 보다 이 다른 블로그 게시물 그 매개 변수에 대해.

FWIW, Microsoft Visual C ++ 2008 / VC90 SP1 재분배 가능 -x86 9.0.30729 용 안내

  • 64 비트 30729.17 : 8220eefe-38CD-377E-8595-13398D740ACE
  • 32 비트 30729.17 : 9A25302D-30C0-39D9-BD6F-21E6EC160475
  • 32 비트 30729.01 : 6AFCA4E1-9B78-3640-8F72-A7BF33448200

² 경로 :$WINDIR\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729*

나는 열린 소스 VC ++ 재분배 가능한 DLL을 확인하는 GitHub의 시각적 C ++ 프로젝트 구체적으로 Apache 2.0 라이센스에 따라 사용할 수있었습니다.

VC ++ 9 및 VC ++ 10 Runtimes의 가용성을 확인하는 세 가지 방법이 있습니다.

  1. MsiqueryProductstate API를 확인합니다.
  2. 제품 디렉토리와 일치하는 Winsxs 폴더의 내용을 검사하십시오. 그리고
  3. VC ++ 9 및 VC ++ 10 Runtimes의 로컬 버전에 대한 현재 작업 디렉토리를 확인합니다 (및 해당 내용을 검사하십시오.)

다음은 실제로 사용하는 샘플입니다.

 wcout << _T("Checking for the availability of VC++ runtimes..") << endl;
 wcout << _T("----------- Visual C++ 2008 (VC++9) -----------") << endl;
 wcout << _T("Visual C++ 2008 (x86) ? ") << (IsVC2008Installed_x86() ? _T("true") : _T("false")) << endl;
 wcout << _T("Visual C++ 2008 (x64) ? ") << (IsVC2008Installed_x64() ? _T("true") : _T("false")) << endl;
 wcout << _T("Visual C++ 2008 SP1 (x86) ? ") << (IsVC2008SP1Installed_x86() ? _T("true") : _T("false")) << endl;
 wcout << _T("Visual C++ 2008 SP1 (x64) ? ") << (IsVC2008SP1Installed_x64() ? _T("true") : _T("false")) << endl;

나는 라이센스를 부여했다 CRT 검출기 Apache 2.0에 따라 프로젝트를 진행하십시오. 자체 응용 프로그램에서 자유롭게 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top