출처 : http://tjstory.tistory.com/120
Visual Studio Setup and Deployment
여기저기 포스트를 뒤져보는데 셋업에 관련한 포스트는 없는 듯 하군요..
못찾는 것인지..
제가 사용하는 범위 내에서 셋업 프로젝트에 관해 알아보고자 합니다.
중간 중간 링크되는 URL 은 관련사항에 대한 문서입니다. 대부분이 MSDN 일텐데..
입맛에 안맞으신다거나 좀더 깊히 들어가고 싶으신분들은 참조 하시면 좋겠습니다.
혹 궁금한 사항이 있으시다면 글 남겨주시면 답변 드리겠습니다.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
환경 : VS 2008, .Net 2.0
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
프로젝트 생성
MSDN .Net 을 이용하여 설치 패키지를 만드는 방법
http://support.microsoft.com/kb/307353
셋업 프로젝트에서 제공되는 기능들에 대해서는 View 영역에서 확인하실 수 있습니다.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
프로젝트 속성
프로젝트 선택후 속성 창의 모습입니다.
[Localization] 은 기본 English 인데 , 이부분을 Korean 으로 바꿔 줍니다.
이부분을 영어로 했을경우 프로젝트내에 한글 인식이 안됩니다.
[Manufacture] 항목은 회사명으로 배포시 설치되는 경로가 됩니다.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
파일 포함하기
Application Folder : 응용프로그램 설치 폴더에 포함되는 파일들
User's Desktop : 바탕화면에 포함되는 파일들
User's Programs Menu : 시작 메뉴에 포함되는 파일들
[Application Folder] 항목에서 우클릭 메뉴를 확인하면, 파일을 추가 할 수가 있습니다.
이곳에 추가되는 파일들은 설치 응용프로그램 폴더에 포함됩니다.
바로가기 아이콘 만들기
http://support.microsoft.com/kb/307358/
[Application Folder] 에 포함된 파일중 바로가기 아이콘을 생성하고자 하는 실행 파일을 선택합니다.
실행파일 우클릭 메뉴를 확인하시고, 바로가기 아이콘을 생성합니다.
바로가기 아이콘은 같은 카테고리 안에 생성됩니다.
생성된 아이콘을 마우스 드래그 하여 User's Desktop, User's Programs Menu 항목에 추가 할 수 있습니다.
생성된 아이콘의 프로퍼티를 조정하여 Icon을 설정 하실 수 있습니다.
[Icon] [Browser] 클릭하여 Icon 파일을 연결합니다.
설치 경로 셋팅하기
이상태로 빌드를 한후, 설치를 해보게 되면 설치 되는 폴더의 경로가 Program Files \ Default Company로 설정될 것입니다.
이 경로에 대한 설정은 [Application Folder]의 프로퍼티에서 변경 할 수 있습니다.
DefaultLocation의 경로를 보게되면, [Manufacturer] 이라는 부분이 있는데 이부분이 회사명에 해당되는 곳입니다.
[Manufacturer]에 해당되는 곳에 회사 명을 포함하여 설치 경로를 조정할 수 있습니다.
예> [ProgramFilesfolder]MyCompany\[Productname]
여기까지의 진행만으로도 파일과 바로가기가 포함된 간단한 셋업 파일을 만들 수 있겠군요.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
UI Interface
사용자가 응용프로그램을 설치 할 때 보게 되는 다이얼로그의 UI에 해당하는 사항을 설정할 수 있는 부분입니다.
간단하게 메세지를 표현 할 수도 있고, CheckBox 등의 컨트롤을 추가할 수 있습니다.
http://msdn2.microsoft.com/en-us/library/ecaca8zb(VS.80).aspx
트리의 각 항목들의 프로퍼티값을 조정하여 UI를 설정할 수 있습니다. 몇가지만 살펴보면..
[Welcome] CopyrightWarning, WelcomeText 설치 시 첫 페이지에 해당 메세지 들이 표시 됩니다.
[Finished] UpdateText 설치 종료시 표시되는 메세지 입니다.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
CustomAction
[CustomAction]은 설치 도중 사용자에 의해 행해지는 작업을 의미 합니다.
예를 들어 응용프로그램이 실행 되기 위해서 닷넷 2.0 이 설치 되어 있어야 한다면,
개발자는 배포시에 닷넷 2.0 또한 같이 배포 되길 원할 것입니다.
CustomAction 에는 4개의 카테고리(Install, Commit, Rollback, Uninstall)가 존재합니다.
각 카테고리는 설치 단계를 의미 합니다.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
사용자 선택에 따른 조건부 설치 설정
http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vsintro7/html/vxwlkwalkthroughpassingdatatocustomaction.asp
Condition 라는 속성 값을 통해서 프로그램의 배포시에 특정 파일을 포함 시키거나
혹은 특정 CustomAction 을 행하느냐 하지 않느냐를 결정 할 수 있습니다.
Filesystem 에 두개의 임의로 제작한 실행 파일을 등록 하였습니다.
[User Interface] [Start] 우클릭 메뉴에서 2개의 라디오 버튼을 포함하는 다이얼로그를 추가 합니다.
다이얼로그를 Welcome 항목 밑에 위치 시킵니다.
<참조> 모든 사용자 지정 대화 상자는 설치 폴더 대화 상자 또는 웹 설치 프로젝트의 설치 주소 대화 상자 앞에 와야 합니다.
추가된 다이얼로그의 프로퍼티 창 입니다.
두개의 라디오 버튼중 1번째 버튼은 Yes 항목 2번째 버튼은 No 항목으로 설정 하였습니다.
ButtonProperty 프로퍼티의 BUTTON2 값은 변수와 같은 개념으로 이 값을 통해 선택된 라디오 버튼을 확인합니다.
FileSystem 에서 추가한 exe 실행 파일을 Custom Actions 에서 Actions 으로 추가합니다.
추가된 실행 파일의 프로퍼티 창을 보면 Condition 항목을 확인 할 수 있습니다.
Arguments 항목을 /Install 로 설정합니다.
Conditions 항목을 BUTTON2=1 로 설정합니다. 눈치 채셨겠지만 추가된 다이얼로그의 버튼 항목입니다.
BUTTON2 항목이 1값으로 선택되었을 경우 작동 합니다.
그냥 조건문이라 생각하시면 되겠군요
InstallerClass 항목을 False 로 설정 합니다.
Yes 선택시 CustomAction.exe 가 실행되고, No를 선택시 무시 됩니다.
이처럼 사용자의 선택에 따라 Custom Action을 지정할 수 있지만, 또한 응용프로그램에 포함되는 파일을 설치시 추가 제거 할 수 있습니다.
앞전에 FileSystem 에서 추가한 Setup_Application.exe 의 Condition 항목에 BUTTON2=1 이라고 설정하였다면
No를 선택시 CustomAction.exe가 설치 되지 않을 뿐만아니라
설치가 종료되고 해당 폴더를 확인하면 Setup_Application.exe가 포함되지 않았음을 알 수 있습니다.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
VerSionNT
http://www.tarma.com/support/tin3/0100-using/0035-symbols/0200-variables/versionnt.htm
조건부 설치 항목에서 Condition 속성에 대해서 알아 봤습니다.
Condition 속성을 이용하면 운영체제에 따른 조건부 설치를 진행 할 수 있습니다.
예를 들어 Condition 속성에 VersionNT>=500 값을 설정 합니다.
VersionNT 는 OS 의 버젼에 따른 값으로 아래와 같습니다.
이 표를 볼때 500 이상이라는 값은 Windows 2000 이상의 버젼을 의미 하겠군요
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
.Net의 재배포, 시작조건
http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vsintro7/html/vxwlkwalkthroughpassingdatatocustomaction.asp
배포하려는 프로그램이 .Net의 특정 버젼을 필요로 한다면 개발자는 .Net을 같이 배포 하길 원할 것입니다.
Microsoft Data Access Componets 를 이용하여 시작 조건을 검사 .Net 을 배포 할 수 있습니다.
셋업 프로젝트의 우클릭 메뉴 속성 창을 열어 보면 우측 하단에 Prerequisites 을 발견 할 수 있습니다.
이는 셋업이 진행 되기 전에 필요한 MDAC 를 추가 하는 창으로거 필요한 컴포넌트에 체크를 하시면 됩니다.
체크 박스 리스트 아래 쪽으로 컴포넌트를 다운로드 하는 방법에 대해서 지정할 수 있는데요.
웹을 통해서, 로컬 경로를 통해서 등... 3가지 경우를 선택 할 수 있습니다.
2번째에 위치한 "응용프로그램과 같은 로컬 경로"를 선택 하였습니다.
이렇게 설정하신후 빌드를 하게 되면 셋업 파일 이외에 시작조건에 필요한 컴포넌트들이 포함된 폴더가 생성이 되는군요.
사실 Vista에서 .Net 3.0 은 Windows 기능으로 포함 되어 있어.. 실행 파일 형식으로 제공되는 .Net의 설치는 할 수 없었습니다.
설치를 시도 할경우 경고 메세지를 띄우게 되죠.
빌드후 생성된 파일은 EnableDotNet 이라는 파일이군요. 이 파일은 실제적으로 닷넷을 설치 하는 것이 아니라.
플렛폼에서 닷넷을 사용할 수 있도록.. 설치가 필요하면 설치를.. 혹은 기능의 추가를.. 해주나 봅니다.
그래서!! Vista 에서 무리 없이 동작하는 군요.
현재 MDAC 는 2.1 sp1 버젼까지 업데이트 되어 있군요.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
시작조건 검사
http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vsintro7/html/vxwlkwalkthroughpassingdatatocustomaction.asp
배포의 시작시에 특정 프로그램의 설치 여부를 확인 할 수 있다면, 이를 확인하여 프로그램을 배포할 수가 있습니다.
WMP11 을 같이 배포 해야 했기에 이에 대해서 알아 보도록 하겠습니다.
[보기][시작조건] 을 클릭 하면 시작 조건 창을 열 수 있습니다.
팝업 메뉴를 보면 파일, 레지스트리, 윈도우 인스톨러, 닷넷, 서비스 등의 시작 조건을 검사 할 수 있습니다.
레지스트리 시작조건을 추가 해보면 [Search Target Machine] [Luanch Conditions] 에 각각 레스스트리 탐색과, 시작 조건노드가 생성 됩니다.
말그대로 레지스트리 탐색은 레지스트리내 특정 키 값을 할당하고 프로퍼티화 합니다.
생성된 컨디션은 이 프로퍼티의 값을 비교 하여 특정 작업을 시행합니다.
WMP11의 버전을 확인 하여 없을 경우 설치 하는 작업을 진행 해보면..
Root 의 vsdrrHKLM 은 HKEY_LOCAL_MACHINE 를 뜻한다.
RegKey에 검색할 키 값을 채워준다.
Value 에 레지스트리 이름을 준다.
Property 는 외부로 노출되는 변수와 같은 개념으로 특정한 이름을 명명한다.
생선된 컨디션의 Condition 에 방금 생성한 레지스트리 탐색의 프로퍼티 값을 주고 값을 비교합니다.
"11,0,5721,5145"는 필자가 넣은 값으로 WMP11의 XP버젼의 레지스트리 값입니다.
위 조건을 만족하지 않는 경우에 Message 항목을 출력하고 InstallUrl의 경로를 실행합니다.
InstallUrl에 필자는 상대 경로를 주었는데.. 위 폴더는 빌드 Release 에 포함되어 있습니다.
CD 로 배포시에 이런 방법이 유용하고, 실제로 유효한 Web 주소를 주어도 해당 웹페이지를 실행 시켜 줍니다.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
파일 형식
http://msdn.microsoft.com/library/kor/default.asp?url=/library/KOR/vsintro7/html/vxwlkwalkthroughpassingdatatocustomaction.asp
배포 되는 실행파일에 연결되는 문서 형식을 지정하는 곳입니다.
예를 들어 .hwp 파일을 클릭하면 한글이 실행되듯이..
우측에 [FileType on Target Marchine]의 우클릭 메뉴로 파일 타입을 생성 할 수 있습니다.
좌측은 생성된 파일 타입의 프로퍼티 창입니다.
Extension 란에 확장자를 넣어 주시면 되구요, 세미콜론(;)을 이용하여 여러개를 지정할 수 있습니다.
참고 파일 형식은 설치된 실행 파일 하나에만 연결할 수 있습니다.
두 개 이상의 실행 파일을 파일 형식과 연결하려면 먼저 각 실행 파일에 대한 조건을 지정하여 지정된 설치에 대해 하나만 설치되도록 해야 합니다.
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
마치며..
제가 직접 해보면서 작성한 포스트라 순서가 순차적이지 않을 수가 있습니다. 이해를 ^^;;
레지스트리 편집기에 대해선 알아보지 않았군요. 사용하진 않았지만 특별히 어려운 사항은 없으리라 생각합니다.
포스트중 제가 잘못 알고 있거나 놓친 부분이 있다면 댓글을 남겨주시면 감사하겠습니다