출처 : http://blog.naver.com/gameprog2/150030216567

 

visual studio 2005 프로그램 배포하기!! (Native)

 

비주얼 스튜디오 2005가 되면서 프로그램 배포가 엄청 어려워졌다.

이전 처럼 그냥 만들어 dll만 같은 폴더에 넣으면 되지 않는 요상한 시스템으로 변경되었다.

나름 dll 지옥에서 벗어나는 것이라고 얘기하지만 배포는 더 어려워만 졌다. ㅜ_ㅜ;;

 

참고 : Microsoft Visual C++ 2005 Redistributable Package 를 MS에서 배포하고 있지만 이거 안됨.-_-;;

 

* 일단 이글은 이론적인 내용보다는 실무적인 부분으로 배포자체만을 다룬다.

 

0. 들어가기 전

    Dependency Walker 라는 프로그램을 받아서 설치해야함.

 

1. win32 응용프로그램 배포하기.

 

- 비주얼 스튜디오에서 프로젝트 옵션이 기본 설정일 경우 배포하기.

 

   * 실행파일을 디펜던시워커에 넣어 dll 종속성을 확인한다.

   * F9를 눌러 전체 보기를 하면 각 dll의 실제 위치가 나온다.

   * 실제 위치중 c:\windows\winsxs 폴더에 위치한 dll에 주목한다.

   * winsxs 폴더의 dll은 실제로 응용프로그램이 참조하는 dll 이므로 배포하고자 하는 시스템에도 같은 위치에 깔려야 한다.

    예) c:\windows\winsxs\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f

   *위 예와 같이 엄청 긴 폴더 밑에 실제 dll 이 위치한다.

   *확인된 모든 winsxs폴더 dll들을 모두 카피하여 따로 복사해 둔다.

   *winsxs 폴더에는 Manifests폴더가 존제하고 예와 같은 긴 이름의 파일 두 개가 존재하는데 이것도 같은 위치에 깔려야 한다.

          x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.cat

          x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_5490cd9f.manifest

   *한 개의 winsxs dll 이 있으면 위 와 같이 기본으로 총 세 개의 파일을 복사해야한다.

 

   *추가로 winsxs폴더에는 Policies폴더가 존제하고 아래 예와 같이 긴 폴더가 있다면 이것도 같은 위치에 깔려야 한다.

          x86_policy.8.0.Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_x-ww_09e017b4
        이름을 보면 세 번쩨 언더 바 다음은 다른 값이지만 역시 복사해서 깔아야 한다.


   *일단 현재 내가 아는 방법이다.

- 비주얼 스튜디오에서 프로젝트 옵션을 변경하여 배포하기.

 

* 매니페스트를 제거하고 배포하면 위와 같이 복잡한 dll 카피를 안해도 된다.(단, 이것은 win32 버전만 해당한다.)

 

2. MFC 응용프로그램 배포하기.

 

- 비주얼 스튜디오에서 프로젝트 옵션이 기본 설정일 경우 배포하기.

 * 이것은 win32 방법과 같이 winsxs파일을 다 찾아서 복사해주어야한다.

 * 주의 점 : winsxs기본 파일들까지 카피 복사 할 필요는 없다.

   예) c:\windows\winsxs\x86_Microsoft.Windows.* 폴더들은 기본이기에 거의다 깔려 있다.(xp이상..)

 

- 비주얼 스튜디오에서 프로젝트 옵션을 변경하여 배포하기.

 * 프로젝트 속성페이지 - 구성속성 - 일반 - MFC사용 의 내용을 '정적 라이브러리에서 MFC 사용'으로 변경한다.

 * 이것은 실행 파일에 라이브러리를 붙여버리는 것으로 따로 dll을 카피할 필요가 없다.

 
===========================================================================================================
 
안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히아이스
,