ATL로 프로젝트를 만드는 이유 중의 하나는 가볍다는 것이다.
그러나 가볍게 만들기 때문에 의존성이 있는 라이브러리를 포함하지 않고 빌드한다.
이로인해 배포 후 다양한 사용자 환경 때문에 환장하는 결과가 찾아오기도 한다.

예전에는 그냥 같은 디렉토리에 포함되기만 해도 되었는데 2005이후 SxS Assembly 때문에 짜증나게 바뀌었다.

이에 대한 예방법이 기본적으로 Static으로 빌드를 하는 것이다. 이것은 atl90.dll 과 manifast 파일을 포함하게 된다. 이로서 최종 빌드된 파일의 용량은 대략 25k 정도 증가한다.

사용자 삽입 이미지




허나 이것으로 해결이 된 것이 아니다.

정적 빌드로 된 것으로 배포 후 사용하려 하면 다양한 의존성 관련 에러메세지를 내뱉어내고 ActiveX DLL인 경우는 죽어도 웹에 바인딩이 되지 않는다. 아주 환장할 노릇!

해결점은 다음과 같다.

0. VS의 셋업 프로젝트를 이용한다. -_-

1. Microsoft Visual C++ 2008 재배포 가능 패키지를 포함한다. -_-

2. .Net Framework를 설치한다. -_-

3. Private Assembly를 설치하는 것이다. Install 파일을 만들때 Microsoft.VC90.CRT.manifest, msvcp90.dll, msvcr90.dll를 포함하여 사용할 DLL과 같은 디렉토리에 설치하는 것이다. regsvr32등은 해줄 필요가 없다. 허나 새로운 버전의 DLL이 나왔을 때 패치되지 않는다.

여기 까지는 그나마 행복한 InstallShield를 사용했을 때다.

4. ActiveX를 위해 만든 ATL은 cab 파일을 만들 때 저 파일들을 포함시켜줘야 한다. 그리고 inf 파일에 [Add.Code]에 넣어주고 아래도 같이 적어주면 된다.

[Add.Code]
   msvcr90.dll=msvcr90.dll
   msvcp90.dll=msvcp90.dll
   Microsoft.VC90.CRT.manifest=Microsoft.VC90.CRT.manifest

[Microsoft.VC90.CRT.manifest]
   file-win32-x86=thiscab

[msvcp90.dll]
   file-win32-x86=thiscab

[msvcr90.dll]
   file-win32-x86=thiscab

대충 이렇다.

5. 이 짓들을 모두 무마하는 설정이 있으니... 그것은 바로바로바로바로바로...
런타임 라이브러리를 다중 쓰레드 DLL에서 다중 쓰레드로 변경하는 것이다. -_)
사용자 삽입 이미지

Visual C++ 2008 Feature Pack Release 설치기

Windows 2008. 4. 8. 10:44 posted by deneb

고대하던 정식판이 나와주셨다.

beta에서 특정 버전만 깔리는 까칠함을 보여주셨는데

이번엔 그나마 영문판 이라면 패스해 주시는 관대함을 배푸셨다.

한글판은 대략 6월 넘길듯 -_-

사용자 삽입 이미지
이번엔 속지 않고 확실하게 정독했다.
대충읽었다가 하루에 세번 깐거 생각하면 -_-

사용자 삽입 이미지
설치 시작 화면

사용자 삽입 이미지
TOC 주저리주저리 라이센스 확인 선택 후 다음 클릭

사용자 삽입 이미지
잘 설치되고 있는 모습

사용자 삽입 이미지
갑자기 원본 넣어달래신다 -_- 당황하지 말고 마운트 시켜주는 센스

사용자 삽입 이미지
설치 완료 모습

듀얼코어 6550, 4GB, Server 2008 기준 20~30 사이로 걸린다.

자 프로젝트를 시작 해보자.

기본 MDI에 오피스모양에 리본 선택 해서 그냥 컴파일 한 모습

사용자 삽입 이미지

미나씨 만나러 가서 많이 봐온 모습이다.

겉모냥이 바뀐것 가지고 흥분하시면 초짜다.

Feature Pack 의 핵심은 TR1이다.

그렇다고 필자도 스마트 모인터인 shared_ptr를 사용하고 정규식 파서가 있고 해쉬 씨리즈를 막 가져다 쓸 수 있다는 것 외에는 잘 모르겠다. -_-

아직도 stl은 컨테이너 밖에 안써서 -_);;;
이거 제대로 당했다.

Server 2008로 과감히 올라가면서 개발환경을 다시 잡았다.
Visual Studio(이하 VS) 쪽은 통상적으로 하위 개발 버전을 깔아야 문제가 생기지 않는다. 개인적 경험으론 VS2k5를 깔고 VS2k3을 설치했을 경우에 아무런 문제가 없었던 적도 있기 때문에 항상 그렇다고 생각하진 않고 순서야 어떻게 되든 환경 설정만 잘 해주면 된다로 생각하고 있다. 그래도 상위를 깔고 하위를 설치하게 되면 제대로 찜찜하다. 환경 설정을 한다고해도 뭔가 이상한 느낌은 지울수 없기에 통상적인 방법을 선택하고 믿고 있는 것이 편하다.

이번에도 역시나 일반적인 방법으로 설치했다.

VS2k8을 사용하는 목적이야 많겠지만 실버라이트니 .netfx 3.5 통합환경이 하는 것 보다 VC++ 2008 Libraries Feature Pack "Beta" 를 직접 사용해 보고자 했던 마음이었다. 이것이 거의 늪으로 들어가는 화근이었다.

VS2k3 관련 설치후  한글판 Visual Studio Team System(이하 VSTS)를  깔고 Windows SDK 설치. 마지막으로 VS90-VCFeaturePack-Beta-KB945273-x86x64-ENU 설치 시도!

사용자 삽입 이미지

설치 불가 -_-

다운로드 사이트에 가서보니 http://www.microsoft.com/downloads/details.aspx?FamilyID=d466226b-8dab-445f-a7b4-448b326c48e7&DisplayLang=en

사용자 삽입 이미지
그렇다. 영문판 이어야 한다. -_-

VSTS 2k8 한글판 제거 T-T

VSTS 2008 Development Edition 2k8 설치 -_-; (이게 실수다)

다시 해당 프로그램 찾을 수 없다는 다이얼로그 T-T

VS2k3 제거, WIndow SDK 제거 -_-;

그래도 해당 프로그램 찾을 수 없다는 다이얼로그 T-T

구글링 모드 돌입
사용자 삽입 이미지
라는 글 발견!

내용은 설치 파일에서 생성하는 임시 디렉토리에 있는 msp 파일을 다른데로 옮겨서 실행해라라!

시도 해봤지만...

사용자 삽입 이미지

역시나... T-T

다른 글을 보니
사용자 삽입 이미지
이런~ 다운로드 페이지에 있는 문구를 건성으로 봤다.
네트워크 경로 설치 했으면 해당 경로를 접근 할 수 있게 하고 DVD로 설치 했다면 DVD에 해당 타이틀을 넣으라는 소리

DVD 이미지 마운트 후 시도!

그래도 해당 프로그램 찾을 수 없다는 다이얼로그 T-T

다시 구글링...
사용자 삽입 이미지
사용자 삽입 이미지
뭐라고? VSTS Development Edition 불가? VSTS Team Suite 영문판과 VS Professional Edition 영문판만 된다는 것이었다.

다시보니 너무 확연히 보인다.
사용자 삽입 이미지
그렇다... 너무 슬쩍봐서 삽질중이었던 것이다. o_o

주의하자.
현재 나와있는 VC++ 2008 Libraries Feature Pack "Beta"(파일명 : VS90-VCFeaturePack-Beta-KB945273-x86x64-ENU.exe)은 VSTS Team Suite 영문판과 VS Professional Edition 영문판 에서만 설치 가능하다.

홧김에 Windows 까지 다시 설치하고 설치 했다. -_-