2015-01-16 16 views
0

현재 나는 3 개 병합 모듈을 포함하는 소프트웨어 제품을 배포하고 있습니다 :MS Visual C++ 2005 ATL 병합 모듈의 대안으로 어떤 파일을 배포해야합니까?

Microsoft_VC80_CRT_x86.msm 
ATL.msm 
policy_8_0_Microsoft_VC80_ATL_x86.msm 

일부 고객은이 MSM 파일을 좋아하지 않는다 패키징 기술을 (그들이 WinSxS에 서면 그들과 함께 기술적 인 문제가 있기 때문에 나는 생각한다)를 사용 . dll 파일을 내 응용 프로그램의 Program Files 폴더에 직접 배포 할 수 있습니까? 그렇다면 어떤 DLL이 필요합니까? 그냥 atl80.dll인가요?

+2

이것이 솔루션으로 적용되는지 확실하지 않지만 재배포 종속성 (CRT 및 ATL의 정적 링크)이 없도록 ATL 기반 바이너리를 작성할 수도 있습니다. 약간 더 무거운 바이너리를 가지며 모듈간에 런타임을 공유하지 않는 대신 종속성 혼란을 해결합니다. –

답변

2

대신 Visual Studio의 해당 버전에 대해 VC_redist.exe를 실행하고 사용중인 설정 도구로 부트 스트 래퍼에서 실행하십시오.

포장 기술에 대한 귀하의 의미를 모르겠습니다. 병합 모듈 (msm 파일)을 설치할 수있는 유일한 방법은 빌드시 MSI 파일 빌드에 추가하는 것입니다. 즉, 관련이있는 패키징 기술은 Windows Installer 및 MSI 파일뿐입니다. 따라서이 문제가 무엇인지 정확하게 알아 내야합니다. 모두가 신뢰할 수있는 일이므로 병합 모듈이나 VC_redist.exe를 사용합니다.

비공식적 인 방법으로 문제를 해결할 때 하나의 문제는 Windows Update에서 찾을 수 없다는 점입니다. 정적 링크에 적용됩니다. 따라서 Microsoft가 해당 Dll에 보안 픽스를 적용하면 고객이 취약하게됩니다.

+0

그들은 워크 스테이션을 스냅 샷하고, MSI를 설치하고, 기계를 스냅 샷하고, 두 개의 스냅 샷을 설치 패키지로 생성하는 이상한 패키지 도구를 사용하고 있습니다. 나는 이유를 모른다. – Rory

+0

@Rory : 매우 이상한 요구 사항을 충족시키기 위해 별도의 패키지를 생성하려는 경우 VC 런타임을 모두 생략하고 Microsoft에서 vc_redist.exe를 가져 와서 별도로 설치하도록 지시하는 것이 좋습니다. (실제로 왜 병합 모듈이 그 시나리오에서 어떤 문제를 일으키는 지 알지 못한다. 그러나 문제가 있다고 생각하지는 않는다.) –

+0

관련 질문 : 병합 모듈이 v8.0.50727.42를 제공하지만 vc_redist.exe에 v8.0.50727.4053 창이 자동으로 자동으로 확인됩니까? 나는 실제로 제품에 무엇이 포함되어 있는지를 알지 못하기 때문에 이에 대한 연구가 필요합니다. 그러나 일반적으로이 WinSxS dll의 요점은 Windows에 최신 버전이 있으면 정확한 버전을 사용할 수 없다는 불평보다는 사용한다는 것입니다. – Rory