Visual Studio 2003~2008 ATL Security Update 관련..(재배포 문제..)
아래는 해결방법을 찾아다니다 데브피아에서 발견한 글입니다.
[증상]
OS : Win7 x64
프로그램 : VS2008 x86으로 제작
프로그램을 만들어서 배포를 했는데 팀원(Win7 x64)의 컴퓨터에서 side-by-side 에러 어쩌고 하면서 실행이 안됐습니다.
그래서 열심히 검색하다가 데브피아에서 아래와 같은 글을 발견했는데..
아래 글을 보고 생각하다보니 Win7 x64에서 자동업데이트를 해봤자 재배포 패키지가 x64만 깔린다는 생각이 들어서
Microsoft Visual C++ 2008 서비스 팩 1 재배포 가능 패키지 ATL 보안 업데이트 x86 버전을 받아서 직접 깔았더니 잘 실행 되네요.
아래 글이 도움 많이 됐습니다. =ㅅ=
Microsoft Visual C++ 2005 서비스 팩 1 재배포 가능 패키지 ATL 보안 업데이트
http://www.microsoft.com/downloads/ko-kr/details.aspx?FamilyID=766A6AF7-EC73-40FF-B072-9112BAB119C2
Microsoft Visual C++ 2008 재배포 가능 패키지 ATL 보안 업데이트
http://www.microsoft.com/downloads/ko-kr/details.aspx?familyid=8B29655E-9DA4-4B6B-9AC5-687CA0770F93&displaylang=ko
Microsoft Visual C++ 2008 서비스 팩 1 재배포 가능 패키지 ATL 보안 업데이트
http://www.microsoft.com/downloads/ko-kr/details.aspx?familyid=2051A0C1-C9B5-4B0A-A8F5-770A549FD78C&displaylang=ko
VC 2005,2008 ATL관련 보안업데트가 있습니다.
일단 설치를 보류하세요.
자동업데이트도 막으십시요.
전 2008을 사용중인데. 어제 VC관련 업데이트가 떴길래 무심코 업데이트를 했습니다.
그리고 오늘 수정건을 업체에 배포했는데 죽어도 실행이 안되길래
따로 테스트를 해보았습니다.
결론부터 말씀드리면 업데이트3건은
2005, 2008 재배포 패키지(sp1일경우는 따로..) 관련
vs 2008관련
3가지가 설치되는데요.
이게 배포시 기본 2008하고 sp1이 다르듯이 아예 재배포 패키지가 다릅니다.
즉 dll버젼이 다르죠.
2008 기본 버젼이 9.0.21022.8이고
sp1이 9.0.30729.1
이번 업데이트로 (sp1) 9.0.30729.4148
dll버젼이 달라서 재배포 패키지를 최신버젼으로 다시 설치해야됩니다.
여기서 젤큰 문제 세가지는
1. 2005,2008 재배포 관련 설치는 추가/제거에 존재하는데 삭제해도 똑같다.
-> vs 2008 sp1관련 업데이트 삭제가 없다.
2. 윈도우 복원을 했는데요. 똑같이 문제가 발생하더란 겁니다.
-> 설치된 목록에도 없고 업데이트 해달라고 떡하니 뜨는데도 말이죠;
3. 2005부터 재배포 패키지로 바뀌었지만 설치된 폴더에서 필요한 몇개의 파일만 같이 포함하면
문제없었는데 이번엔 아예 그게 안먹힙니다. 제결론으로 그 이유는
manifest 명시를 보면
기존 sp1을 보면(mfc사용시)
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"></requestedExecutionLevel> </requestedPrivileges> </security> </trustInfo> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC90.MFC" version="9.0.30729.1" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> |
9.0.30729.1 버젼의 crt와 mfc라이브러만 명시되어 있지만
이번 업데이트로는
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> |
9.0.30729.1과 9.0.30729.4148 CRT를 둘다 필요로 합니다. 고로 9.0.30729.4148 dll만 포함하면 실행이 안되겠죠.
결론.
아직 정확한 문서를 못봐서 atl관련 뭐가 업데이트 됐는진 모르지만 설치하지마세요 ㅡ.ㅡ;
이미 설치하셨다면 업데이트된 pc에서 컴파일한 파일 배포시는 재배포 패키지를 바꿔야합니다.
아예 모든 재배포 패키지를 최신꺼로 바꿔야합니다;
sp1용 재배포 패키지 주소 올려드립니다. 한글로는 아직검색 안되는듯 하네요.
Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package ATL Security Update
Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package ATL Security Update
제가 겪은 일을 일단 빨리 올려봅니다.
댓글로 잘못된 부분은 알려주세요.
업데이트된 내용도 올려주심 감사.
출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=8351&ref=8351
'Tip & Tech' 카테고리의 다른 글
[펌] 비주얼 스튜디오 _CrtDumpMemoryLeaks() 을 이용한 메모리 누수 탐지법 (0) | 2011.06.08 |
---|---|
송창규, “unity build로 빌드타임 반토막내기”, Nexon Developer Conference, May 2010 (0) | 2011.05.30 |
프로그램의 설계시에 알아야 할 좋은 코딩 습관 (0) | 2011.05.22 |
메모리 릭 잡기 (0) | 2011.05.09 |
디버거로 프로그램 실행 도중 변수 값 조정 방법 (0) | 2011.04.29 |