Visual Studio 2010 설치 프로젝트 및 .Net Framework 부트스트래퍼 인스톨
출처 : http://clnaccce.tistory.com/entry/Visual-Studio-2010-%EC%84%A4%EC%B9%98-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%B0%8F-Net-Framework-%EB%B6%80%ED%8A%B8%EC%8A%A4%ED%8A%B8%EB%9E%98%ED%8D%BC-%EC%9D%B8%EC%8A%A4%ED%86%A8
오늘 적어둘 내용은
1. Visual Studio 2010 에서 설치 프로젝트를 통해 Install Package 만들기.
2. 부트스트래퍼(Bootstrapper) 방법으로 .Net Framework 설치하기.
최근 작은 프로젝트를 진행하면서 C#으로 개발한 솔루션을 웹페이지를 통해서 배포해야하는 문제가 생겼다.
사용자는 소규모 납품업체들이라 전산담당자 한명 없는 회사가 99% 이다.
그래서 원클릭 설치는 필수.
닷넷 개발 시작한지 6개월.
잘 알리가 없다.
이러지리 뒤져서 찾아낸 방법을 정리해두려고 한다.
▶ 그림과 같이 프로젝트를 생성한다.
▶ 프로젝트 이름은 'FocusClientInstall'이라고 하였다.
▶ 솔루션 구성화면.
▶ '응용 프로그램 폴더'는 설치된 파일들이 위치한 경로를 설정한다.
▶ '사용자 바탕화면' 바탕화면에 설치될 실행파일의 바로가기를 만든다.
▶ '사용자 프로그램 메뉴' 시작메뉴에 구성될 실행파일의 바로가기를 만든다.
▶ 첫 번째 할일은 '응용 프로그램 폴더'를 선택하고 속성창에서 DefaultLocation 속성을 편집한다.
▶ 이것은 배포할 파일들이 설치될 위치를 결정하는 것이다.
▶ '응용 프로그램 폴더'를 선택하고 설치할 파일들을 선택한다.
▶ '응용 프로그램 폴더'에 설치될 파일들을 추가하였다.
▶ ico(아이콘) 파일은 바로가기 아이콘을 위해서 추가하였다.
▶ 실행 프로그램에 대하여 '바로가기'를 만든다.
▶ '바로가기' 만들기는 두번 작업한다. 하나는 '사용자 바탕 화면'을 위해서, 또 하나는 '사용자 프로그램 메뉴'를 위해서 한다.
▶ '바로가기'를 만들고 Icon 속성을 편집한다. Icon은 '응용 프로그램 폴더'에 추가한 아이콘 파일을 지정한다.
▶ 만들어지 바로가기는 '사용자 바탕화면'으로 드래그앤드랍(Drag and Drop)으로 이동한다.
▶ 두번째 바로가기를 만든 후에 '사용자 프로그램 메뉴'에 드래그앤드랍 으로 이동하는데, 시작메뉴에 등록되는 것이므로 폴더를 하나 생성해서 메뉴그룹을 만들어주는 것이 좋겠다.
▶ '사용자 프로그램 메뉴' 아래에 'TestFocus'라는 메뉴그룹(폴더)을 생성하고 바로가기를 옮긴 상태.
▶ 여기까지 배포해야할 파일들의 설치 작업은 완료되었다. 그러나 한가지 놓치지 말아야할 것이 있다.
▶ 오른쪽 솔루션탐색기에 '발견된 종속성' 폴더를 보면 'Microsoft .NET Framework'가 종속되어 있다.
▶ 종속된 파일은 반드시 같이 배포가 되어야한다.
▶ 게다가 설치할 응용 프로그램은 닷넷으로 개발된 어플리케이션 이므로 클라이언트에 닷넷이 설치되지 않으면 어플리케이션이 실행될리 없다.
▶ 닷넷 프레임워크가 설치되지 않으면 안되는 것이 또 하나 있는데 그것은 '설치 프로젝트'를 통해서 만들어지는 설치실행파일이다(확장자 msi).
▶ 이런저런 이유로 닷넷프레임워크는 사전에 반드시 설치가 필요한데, 이 때 사용되어지는 인스톨 방식이 부트스트래퍼 인스톨이다.
▶ 부트스트래퍼 인스톨은 어떤 응용프로그램이 설치되기 전에 필수적으로 설치되어야할 객체들(어셈블리)의 설치여부를 체크하고 설치 여부에 따라 설치하거나, 설치를 스킵하거나 하는 인스톨 과정을 말한다.
▶ 부트스트래퍼 인스톨 패키징 작업은 아래 순서로 진행한다.
▶ 프로젝트에서 컨텍스트메뉴(오른쪽 마우스버튼 메뉴)를 띄우고 '속성' 메뉴를 선택한다.
▶ '필수 구성 요소(P)...' 버튼을 클릭한다.
▶ 부트스트래퍼로 설치할 구성요소들을 선택한다.
▶ 닷넷 프레임워크 설치는 두가지가 있다. 하나는 Client Profile이고 하나는 Full 버전 이다. Client Profile은 닷넷 기반 프로그램들을 구동하기 위한 최소한의 설치를 말한다. 자신의 어플리케이션에 맞게 구성요소를 선택하면된다.
▶ 구성요소 목록 아래쪽에 Windows Installer가 있는데 반드시 선택하도록 한다.
▶ Windows Installer의 경우 클라이언트 환경이 Win7 + sp1이면 이미 설치되어있다. 또한 Xp + sp3 이면 이미 설치되어있다. 이 경우는 선택하였더라도 설치시 Skip 된다.
▶ 필수구성요소의 설치위치는 상황에 따라서 선택할 수 있지만, 나의 경우는 웹을 통해 배포하는 경우이므로 공급업체 웹사이트에서 설치파일을 다운로드 하도록 설정하였다. 두번째의 옵션은 필수구성요소가 설치될 응용프로그램과 같은 위치에 있어야한다는 것 같고, 세번째 옵션은 네트워크 상의 어떤 위치에 구성요소 설치파일들이 존재해야한다는 거 같다.
▶ 이제 배포할 준비가 되었다. 여러가지 옵션들을 선택하여 처리할 수 있으나, 이번 프로젝트에서 필요한 것은 여기까지 였기 때문에 설명도 여기까지말 한다 (이건 완전 내맘대로)
▶ 빌드!!!
▶ 빌드하니까 두개의 파일이 생겼다. 두개의 파일에 대해서 설명하자면...
▶ setup.exe 파일은 필수구성요소 설치를 위한 설치실행파일이다. 즉 이녀석은 닷넷이 설치되지 않았더라도 실행이 가능하다는 얘기다.
▶ FocusClientInstall.msi 파일은 어플리케이션 설치파일이다. 이녀석은 Windows Installer 가 없거나, 닷넷프레임우크가 설치되어있지 않으면 실행되지 않는다.
▶ 배포하려는 어플리케이션을 설치하기 위해서는 setup.exe를 실행해야한다.
*** 아~~ 밤도 늦었는데 글이 길어지니까 점점 귀찮아진다 ***
▶ 그런데 난감한 일이 발생한다. 최조의 의도는 웹페이지를 통해 원클릭 배포를 목적으로 했는데 난감하게 두개의 파일을 배포해야한다.
▶ IExpress 라는 프로그램을 이용하면 두개의 파일을 묶어서 설치프로그램으로 만들 수 있다.
▶ 이 후 과정들은 IExpress로 설치프로그램을 만드는 과정이다.
▶ 요렇게 시작하는 녀석이다.
▶ 'SED 파일 새로 만들기'를 선택하고 '다음'
▶ '파일의 압축을 풀고, 설치 실행하기'를 선택해야한다. 당연한 것 아닌가...'다음'
▶ 설치과정에서 대화상자에 나타날 제목을 입력한다. '다음' 클릭.
▶ 이부분은 필요 없어서 패스. '다음' 클릭.
▶ 이부분도 필요 없어서 패스. 참고로 저작권을 표시하고 싶으면 텍스트파일로 적어놓은 파일을 선택만 하면된다. '다음' 클릭.
▶ '설치 프로젝트'에서 빌드하여 만들어진 설치파일 두개를 추가한다.
▶ 설치 프로그램 항목에 setup.exe를 선택해야한다. 클라이언트 피시에 닷넷이 설치되어있는지 아닌지를 알지못하는 상황에서 닷넷이 설치되어있지 않다는 가정하에 반드시 setup.exe를 먼저 실행해야한다. 그러면 msi파일은 ???
그것은 setup.exe가 할 일을 다한 후에 자동으로 msi파일을 실행시켜준다.
▶ 기호에 맞게 선택하면 된다.
▶ 설치가 완료되면 표시할 메세지를 적어준다.
▶ 생성될 설치 패키지의 저장위치와 파일명 설정
▶ '패키지에서 사용한 긴 이름 파일 저장' 체크박스는 반드시 선택한다.
▶ 그렇지않으면 설치 파일에 긴 이름을 사용한 경우, 파일 이름이 줄어들어서 (FocusCli~.msi) 파일을 찾을 수 없다고 나온다. 어처구니 없는 일인데 예전 버전의 windows에서는 긴 이름이 허용되지 않았기 때문인 것 같다.
▶ 필요한 데로 하면 된다. 이번 경우는 필요 없어서 그냥 패스.
▶ 진행과정 데이터를 저장한다.
▶ 패키지 준비 완료.
▶ 설치패키지가 만들어지는 과정....
▶ 설치패키지가 완료되었다.
▶ 'FocusClientInstallPackage.EXE' 파일을 웹사이트에 링크하여 배포하면된다.
'Language > C#' 카테고리의 다른 글
Listview 복사(복제하기) (4) | 2015.09.11 |
---|---|
MessageBox 옵션... Error 메시지 띄울때 (6) | 2015.08.31 |
C# winform 에서 AboutBox 만들기 (6) | 2015.08.28 |
Button Click 이벤트 강제? 호출 (6) | 2015.08.24 |
Ctrl+S save 로직 만들때 (4) | 2015.08.24 |