Visual C++ 버젼별 배포방법 DarkKaiser, 2008년 11월 14일2023년 9월 6일 출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8187&page=1 제가 볼려고 정리한건데요. (다른분들 글도 인용좀 했는데 출처가 어디였는지;;;;)잘못 알고 있는거도 있을수 있습니다. 고수님들 잘못된거 답글 부탁드립니다. ㅎ 배포전에 Dependency를 이용 꼭 필요한 파일의 목록을 확인한다.(8버젼 부터는 안먹히기도 하나 그래도 꼭 확인한다)VC에 있는 Dependency툴은 단일파일로 실행되고 한번만 실행해주면 윈도우 탐색기 컨텍스트 메뉴에 자동으로 View Dependencies를 추가해준다. VC 6 이하(~ VS 6)MSVCRT, MFC42 등의 MFC버젼과 관련된 DLL과 추가로 사용한 DLL을 같이 배포한다. 98이후부터는 운영체제에 포함되어 있다.참고로 http://activex.microsoft.com/controls/vc/mfc42.cab로 관련 DLL을 다운받을 수 있으며 ActivX 배포시 inf파일에 추가해서 자동으로 설치되게 만들 수도 있다. VC 7(VS 2003)MSVCR71, MFC71이 DLL은 최신 운영체제라고 해서 더는 기본 내장을 해 주지않기 때문에 응용 프로그램이 알아서 자기 디렉터리나 윈도우 시스템 디렉터리에다 구비해야 한다. VC 8이후(VS 2005~)side by side asembly라는 기술이 도입되어 windows 디렉토리에 밑에 WinSxS(Windows Side-by-Side) 폴더에 추가 작업을 해야한다.Dependency를 사용해서 관련 DLL을 같이 배포해도 제대로 실행된다는 보장을 할 수 없다.관련 DLL들은 C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT(이하 2005기준)에서 얻을수 있으며 MFC를 안쓰고 release버전만 배포한다면 Microsoft.VC80.CRT.manifest, msvcp80.dll, msvcr80.dll만 배포해도 된다.(msvcm80.dll은 매니지드C++용 crt라 native를 쓰는 경우는 배포하지 않아도 된다.) 배포방법으로는1. 재배포 패키지를 이용한다. 링크에서 다운받아 설치해도 되며 다른 배포방법도 설명하고 있다. 설치 디렉토리에서 얻기C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86 Microsoft Visual C++ 2005 SP1 재배포 가능 패키지(x86)http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=ko Microsoft Visual C++ 2008 재배포 가능 패키지(x86)http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&DisplayLang=ko 2. 정적 라이브러리를 사용한다(포함) -> CRT(/MT), MFC, ATL 등실행파일이 커지긴 하나 제일 간단하다. MFC 라이브러리를 사용시는 MFC라이브러리를 정적으로 포함하면 CRT도 자동으로 /MT로 변경된다. 고로 어디서든 기존보다 더 간단하다. 귀찮아서 ActiveX를 이렇게 배포한적있음 ㅡ.ㅡ; 용량은 기본 MFC 다이얼로그 프로젝트가 아무것도 추가안하고 52k정도에서 308k 정도로 커진다. 3. 인스톨쉴드(Install Shield), 설치 프로젝트를 이용한다. 4. .Net Framework를 설치한다.managed 로 컴파일했다면 .Net Framework는 필수이다.-> 추가! MFC,ATL을 사용안한 프로젝트에 한해서만 먹힙니다. 프레임웍만 깔면 WinSxS에 VC80.CRT관련만 설치되네요. VC90도 똑같습니다. 재배포 패키지를 설치하셔야 MFC,ATL관련이 깔립니다. 위 방법 외에도 몇가지가 더 있으며 재배포 패키지 링크에 연결된 설명들과 아래 링크들을 참조하기 바란다.http://www.codeproject.com/cpp/vcredists_x86.asp(codeproject에 소개된 방법)http://www.serious-code.net/moin.cgi/RedistributingVisualCppRunTimeLibrary /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 재배포 패키지를 이용한 OCX(ActiveX) 배포 (2005 ~)Cab 파일들어갈 파일 내용은 다음과 같다. 자신이 만든 ocx파일 inf 파일 재배포패키지 INF파일의 내용은 다음과 같다. [Setup Hooks] hook1=hook1 [hook1] run=%EXTRACT_DIR%\vcredist_x86.exe [version] signature=”$CHICAGO$ AdvancedINF=2.0 [Add.Code] mytest.ocx=mytest.ocx vcredist_x86.exe=vcredist_x86.exe [vcredist_x86.exe] file-win32-x86=thiscab DestDir=11 RegisterServer=no [mytest.ocx] file-win32-x86=thiscab DestDir=11 FileVersion=1,0,0,3 clsid={1DF754CB-D85F-490B-9011-BDCB0BFDC430} <= 이건 아시져? RegisterServer=yes inf파일의 [Add.Code]는 나열된 순서의 반대로 설치가 되는 점을 유의하며 위와같이 하면vc2005 재배포 패키지가 실행된후 맨 마지막으로 ocx가 설치된다. C/C++/VC++