VS 6 이전
MSVCRT, MFC42 등 MFC와 관련된 DLL을 같이 배포한다.
http://activex.microsoft.com/controls/vc/mfc42.cab로 관련 된 dll을 다운로드 할 수 있으며 ActiveX 배포시 inf 파일을 추가해서 자동으로 설치되게 만들 수도 있다.
최근에는 (아마도 Win XP SP2 정도??) ActiveX 에 보안 설정이 강화되어 아예 설치가 되지 않게 되어 있다. 해결 방법은 이 블로그를 뒤지면 나오는데... 링크는 나중에...
VS7
MSVCR71, MFC71 dll을 실행모듈이나 \windows\system32 폴더에 복사한다.
VC8
Side by side assembly라는 골치 아푼 놈을 적용해서 윈도우 디렉토리 밑에 WinSxS(Windows Side by Side) 폴더에 추가 작업을 해야 한다.
예전에 실행모듈의 의존성 체크를 해서 필요한 dll들을 찾아 복사해주던 방법도 이제 통하지 않게 되었다. (이하 2005 기준)
관련 dll들은 \Program Files\Microsoft Visual Studio 8.0\VC\redist\x86\Microsoft.VC80.CRT 에 있으며 MFC를 안스고 릴리즈 버전만 배포한다면
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로 변경된다. 고로 어디서든 기존보다 더 간단하다. 용량은 기본 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가 설치된다.
출처 : slipy1님
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8187&page=2