본문 바로가기

개발환경

Visual C++ 2008 RunTime Library 재배포 가능 패키지 차이

728x90
반응형
Visual Studio 2008로 개발한 Visual C++ DLL 모듈을 C#의 ClickOnce 배포 방법에 의해서 배포하는 프로젝트를 개발중이다.
Visual C++ DLL 모듈이 mfc90u.dll 을 필요로 하므로 이 프로젝트가 대상 시스템에서 실행될 수 있게 하기 위해서는 Visual C++ Run Time Library 가 ClickOnce 설치시 함께 설치되어야 한다.

그런데!!!
Visual Studio 2008이 설치된 나의 개발 PC에 Visual C++ 런타임 라이브러리 배포를 포함한 프로젝트를 설치하였더니 Visual Studio 2008이 실행될 때 다음과 같은 에러가 발생하였다.
사용자 삽입 이미지
난감함...

프로그램 추가/제거를 확인해 보니 시스템에 설치되어 있는 Visual C++ 2008(9.0) Run Time Library 가 두 가지 버전이다.
동일한 9.0대 버전이지만 빌드번호가 상이하다.
사용자 삽입 이미지
이 둘 중에서 내가 만든 배포 프로그램이 설치한 Visual C++ RunTime Library 는 9.0.30304(크기 : 11.74MB) 이다.

어찌된 영문인지...
내가 만들어서 배포한 프로그램인데 내 시스템에 설치되면 내 프로그램을 사용 불가능하게 만들다니...
게다가 상위 버전인데...

지금부터 그 차이의 원인을 밝혀나가보도록 하겠다.

우선 내 시스템은 개발용 시스템이다.
개발용 도구로서 Visual Studio 2008이 설치되어 있다.

내가 배포한 프로그램을 설치할 때 함께 설치되는 Visual C++ RunTime Library 가 설치된 이후와 이전의 파일들을 비교해 보았더니 다음과 같이 6개 파일이 차이가 났다.

사용자 삽입 이미지
그렇다면 이번에는 마이크로소프트 다운로드 사이트에서 내려받은 Visual C++ RunTime Library 재배포 패키지를 설치해보자.

내려받은 파일은 vcredist_x86.exe 이고, 크기는 1.67MB. 파일의 등록정보를 보니 버전이 9.0.21022.8 로 되어 있다.
사용자 삽입 이미지
다시 말해서 내가 만든 배포 프로젝트에 포함시킨 버전과 다르다.

이 파일을 실행시켜서 시스템에 설치한 후 프로그램 추가/제거 를 살펴보니 다음과 같이 세 가지 항목이 보였다.
사용자 삽입 이미지
이번에 새로 설치한 9.0.21022 버전의 Visual C++ RunTime Library 의 설치된 크기는 5.21MB이다.

이 상태에서 다시 Visual Studio 2008을 실행시켜보았더니 잘 실행된다.

바로 직전 상태의 WinSxS 폴더와 어떤 차이가 있을까?
사용자 삽입 이미지
그럼 이번에는 내 배포 프로그램을 설치하기 이전과 비교해 보았다.
사용자 삽입 이미지

결론...
Visual Studio 2008에서 ClickOnce 배포 방법을 통해서 배포할 때 Visual C++ 런타임 라이브러리는 구성 요소 공급업체의 웹사이트에서 다운로드하여 설치하도록 해야 한다는 것!!
사용자 삽입 이미지

위와 같이 했는데도 vcredist_x86.exe 는 문제있는 파일이 게시가 된다.
그래서 마이크로소프트 사이트에서 다운로드받은 파일을 게시 폴더에 덮어쓰기해 두는 방법으로 해결하였다.

반응형