Visual C++ 2010에서의 배포
다른 컴퓨터에 응용 프로그램을 배포할 때는 응용 프로그램 자체와 해당 응용 프로그램이 종속된 모든 라이브러리 파일을 설치해야 합니다. Visual C++ 2010에서는 응용 프로그램과 함께 Visual C++ 런타임을 배포하는 세 가지 방법(중앙 배포, 로컬 배포 또는 정적 연결)을 제공합니다.
중앙 배포
중앙 배포는 Visual C++ DLL이 System32 디렉터리에 설치됨을 의미합니다. 다음 중 하나를 사용하여 응용 프로그램을 중앙 배포할 수 있습니다.
**VCRedist_**architecture.exe 명령줄 도구. 여기서 architecture는 x32, x64 또는 ia64입니다.
병합 모듈
VCRedist_architecture.exe는 특정 하드웨어 플랫폼에 사용할 모든 라이브러리를 설치합니다. 병합 모듈 또는 .msm 파일은 개발자가 공유 Windows Installer 구성 요소와 설치 로직을 해당 응용 프로그램에 전달하는 표준 방법을 제공합니다.
중앙 배포의 주요 이점은 응급 서비스 기능입니다. 중요한 보안상 취약점이 검색되면 중앙 배포된 라이브러리 파일이 자동으로 업데이트됩니다.
로컬 배포
로컬 배포는 응용 프로그램의 라이브러리 파일이 응용 프로그램 폴더에 설치됨을 의미합니다. 응용 프로그램을 로컬로 배포하려면 실행 파일과 관련 라이브러리 파일을 한 폴더에 복사합니다.
파일 이름에 버전 번호(예: CRT DLL의 버전 10은 msvcr100.dll)가 포함되므로 서로 다른 라이브러리 버전이 함께 있을 수 있습니다.
중앙 배포된 라이브러리와는 달리 로컬 라이브러리는 자동으로 업데이트되지 않습니다. 로컬 배포를 사용하려는 경우 자체 라이브러리 업데이트 방법도 구현해야 합니다.
정적 링크
응용 프로그램을 임의의 라이브러리(예: CRT, MFC 또는 ATL)에 정적으로 링크하여 DLL에 종속되지 않은 실행 파일을 생성할 수 있습니다. 정적 링크의 이점은 응용 프로그램을 배포할 경우 라이브러리 파일을 복사하지 않고도 컴퓨터 간에 복사된다는 점입니다. 정적 링크를 사용하고 연결된 라이브러리가 업데이트되면 응용 프로그램에서 업데이트된 라이브러리를 사용할 수 없습니다.
보안 취약성
보안 취약성이 있는 경우 영향을 받는 라이브러리의 패치된 버전인 핫픽스가 제공됩니다. 응용 프로그램 작성자가 취약한 라이브러리가 있는 컴퓨터에 핫픽스를 배포해야 합니다.
보안 취약성이 중요하다고 판단되어 응급 서비스가 필요할 경우 Microsoft Update를 사용하여 특정 Visual C++ 라이브러리가 중앙에 설치된 모든 컴퓨터에 서비스됩니다. 응용 프로그램에서 로컬 라이브러리 파일을 사용하는 경우에는 응급 서비스에 대한 고유 프로비전을 만들어야 합니다.
Visual C++ 2008과 Visual C++ 2010의 차이점
Visual C++ 2008과 Visual C++ 2010 간에 가장 크게 변경된 내용은 다음과 같습니다.
Visual C++ 라이브러리는 더 이상 매니페스트에 종속되지 않으며 WinSxS 폴더에 설치되지 않습니다.
종속 응용 프로그램 및 라이브러리에 더 이상 매니페스트 정보가 필요하지 않습니다.
로컬 배포에 더 이상 위성 매니페스트가 필요하지 않습니다.
로컬 Visual C++ 라이브러리의 로드를 중앙 위치로 리디렉션할 수 없습니다.
응급 서비스는 중앙 배포된 라이브러리에만 적용됩니다.
문제 해결
로더 문제를 진단하려면 depends.exe 또는 where.exe를 사용합니다. Visual C++ 라이브러리의 로드 순서는 LoadLibraryEx에서 정의된 순서입니다.