프로젝트 중에 WPF로 작성된 프로젝트가 있다.
과거 Visual Studio 2010용으로 제작하고, Blend를 이용해 작성되어 있다.
문제는 Visual Studio 2017로 넘어오면서 이 프로젝트자체가 Load되지 않아 아무런 작업을 못했다.
.

아마도 과거 Blend를 사용한 결과물이 프로젝트 설정 값에 녹아 있지 않을까 하는 짐작만 든다.
위의 메시지를 읽어보면, Expression.Blend.WPF.targets 라는 파일의 부재로 인해 발생되는 문제 같다.

고작해야 프로젝트 빌드만 할 것인데, 이제와서 Blend 4.0을 설치하기는 싫고 고민 고민하는 중에, google 검색 결과 Blend SDK를 설치하라는 메시지를 보아, 그 내용대로 SDK를 설치해봤다.

BlendWPFSDK_ko.msi

파일을 다운받아 설치한 뒤, Visual Studio를 재시작했다.

정상적으로 프로젝트를 Load되고 컴파일까지 되는 것을 확인했다.

728x90

이 설치는 SharePoint Foundation을 간략하게 설치하거나, 개발 환경 정도로 구성할 때 사용한다. 실제 운영하거나, SharePoint Server 2010 Standard 이상 버전의 서버 군 설치와는 다르다.

이 작업을 위해 필요한 환경은 아래와 같다.

Hardware

  • x64를 지원하는 PC 혹은 가상 머신
  • RAM 4G 이상.
  • HDD 80G 이상.
  • 인터넷이 연결 가능한 네트워크

Software

  • MS Windows Server 2008 R2 Standard 혹은 Enterprise Edition.
  • SharePoint Foundation 2010 ( http://download.microsoft.com 에서 다운 가능 )
  • MS SQL 2008 R2 Express with Tools ( http://download.microsoft.com 에서 다운 가능 )
    - 그냥 Express 버전은 Management Tool 이 없어서, DB 설정이나, 구성을 할 때 사용하는 도구가 없다.

Overview

전체적인 설치 순서는 다음과 같다. 이 순서대로 캡쳐 화면과 함께 소개할 예정이다.

  1. MS Windows Server 2008 R2 설치.
  2. Windows 관련 설정.
  3. SharePoint Foundation 설치.
  4. SQL 2008 R2 로 업그레이드 및 DB 관리도구 설치.
  5. SharePoint Foundation 구성.
  6. 기타..

이제 위의 순서대로 설치하는 방법을 나열할 것이다.
캡쳐된 화면은 1024 * 768의 화면을 캡쳐했는데, 블로그의 표시 해상도 상 사이즈를 많이 줄였다.
만일 제대로 확인이 불가능하면, 해당 그림을 클릭해서 확대해서 보면 된다. 

 

MS Windows Server 2008 R2 설치

Windows Server 2008 R2 미디어를 준비한다. 그리고 필요하면 CD-Key 정도는 확보해야 한다. 정품인증을 하지 않아도  대략 30일 정도는 사용할 수 있지만, 그 이후에는 여러 가지 문제가 발생할 수 있다. 또한 Windows Update 부분에서도 일부 불이익을 받을 수 있다.  만일 단순 테스트 용도라면 굳이 정품 인증이 필요 없다.

먼저 일반적인 Windows 설치와 마찬가지로, 미디어를 넣고 시작한다. Windows Server 2008 R2는 Windows 7 기반과 동일한 비슷한 구조로 되어 있어 시작화면도 Windows 7과 비슷하다.

본격적인 서버 설치 화면은 다음과 같다.

로딩이 완료되면 제품을 선택하는 화면이 나온다. 이 중, Standard 혹은 Enterprise를 선택한다. 또한 주의할 점이 (Server Core Installation) 이라는 항목들이 있는데, 이것은 피하도록 하자. 반드시 (Full Installation)을 선택한다. (Server Core Installation)은 진짜 Server의 핵심적인 모듈만 설치하기 때문에, UI가 전혀 없고, 도스 창 하나만 달랑 나오기 때문에, 진짜 운영용 서버를 만드는게 아니면 피하는게 상책이다.

만일 HDD Disk가 여러 개인 경우나, 파티션이 나눠져 있거나, 혹은 기존에 설치된 운영체제가 있는 경우에는 디스크 관련 도구가 뜬다. 그 부분은 상황에 맞춰서 적절하게 설치위치를 잡아준다.

설치가 본격적으로 진행되면 다음과 같은 화면이 나타나면서 자동으로 설치가 진행된다.

설치가 완료되면 Administrator의 암호가 설정되지 않았다고 나오면서 암호를 넣어달라고 한다. 이 암호를 만든 후에, 그 암호로 로그인을 하도록 한다. 그러면 Windows Server 설치는 완료된다.

Windows Server 설정

반드시 필요하다고 하면 필요하고 필요 없다고 하면 필요 없지만, 일단 간단한 설정을 해주도록 한다.

먼저 Internet Explorer의 보안설정을 끄도록 한다. 여기서는 약자로 IE ESC 라고 하는데, 이 항목들을 모두 Off로 해줘야 한다. 안 그러면 보안 설정으로 인해 웹사이트 접속이 어렵기도 하고, SharePoint 내의 검색 엔진이 정상적으로 동작하지 않게 된다.

서버 관리자를 띄우면 바로 볼 수 있다. 아래의 그림에서 왼편에 있는 Configure IE ESC링크를 누르면 창이 뜨는데, 그 안의 내용에 모든 Off 부분에 설정하면 된다.

다음 작업들은 반드시 필요한 것은 아니지만, 관리 및 작업의 편의상 해주면 좋은 정도이다.

Windows Update 비활성화.

MS의 Windows Update 설정은 대부분 완전 자동으로 하는 것을 추천한다. 하지만, 서버 제품 군은 가급적 이 설정을 끄는 것이 좋다. 특히 예상치 못한 시점에 갑자기 꺼지는 경우도 있기 때문이다.

설정 방법은 간단하다.먼저 제어판에 들어간다.

다음은 System and Security에 들어간다.

Windows Update 항목에 들어간 뒤,

왼편에 조그만하게 있는 Chnage Settings에 들어간다.

선택상자에서 Never check for updates를 선택하고 OK를 클릭한다.

 

User Account Control 비활성화

UAC(User Account Control) 이란, Windows에서 동작하게 되는 중요한 자원(시스템 파일 혹은 레지스트리 정보, 설치된 프로그램 파일 등등)이 자동적으로 프로그램에서 손대게 될 때, 사용자에게 확인 작업을 하는 보안 기능이다. 특히 트로이의 목마 같이 사용자 몰래 동작해서 Windows의 주요 파일들을 멋대로 변조하거나, 시스템 감시를 하는 짓과 같은 것을 원천 차단하게 된다. 이 기능은 Windows의 최 중심부인 Kernel 레벨에서 원천 차단하기 때문에, 화면이 완전히 멈추고, 사용자 확인을 요청하는 확인, 취소 버튼만 보이게 된다. 그래서 보안 설정 상 이 부분을 그래도 두는것을 권장한다.

하지만, 매번 작업할 때마다, 화면이 잠기게 되면 매번 확인을 눌러주는 것도 일이 되는데다가, 원격에서 작업하는데 미묘하게 화면이 잠겨서 더이상애로사항이 꽃피게 된다. 가급적 이 옵션을 설정하는게 편하다. 물론 화면이 잠겨도 아무런 문제가 없다면 켜 놓는게 좋다.

먼저 제어판에 들어간다.

제어판 항목 중, User Account 항목을 선택한다.

User Accounts 안의 User Account를 선택한다.

User Account 안에 맨 아래에 위치한 Change User Account Control Settings 를 클릭한다.

그러면 UAC(User Account Control) 설정화면이 나오는데, 여기서 맨 아래 단계로 맞추고 OK를 클릭한다

 

SharePoint Foundation 설치.

이제 본격적인 SharePoint 설치가 되겠다. SharePoint 에서 설치 작업은 크게 파일 자체 설치와 DB 구성 설치로 나눌 수 있다. 그에 맞추어 설명한다.

먼저 SharePoint Foundation 설치 파일을 실행한다. 대개 http://download.microsoft.com 에서 SharePoint Foundation 이라고 치면 설치파일을 쉽게 찾을 수 있다. 이 파일을 받아 설치를 하면 된다. 더블 클릭하면, 자동으로 압축을 풀고 설치진행이 시작된다.

이 SharePoint Foundation도 나름 서버 제품이기 때문에, 서버 제품 특유의 Autorun 화면이 나온다.
그 중 “Install software prerequisites” 라는 항목을 클릭해서 실행한다. (Install 바로 다음에 있는 항목)

예전에는 설치를 진행할 때, 설치에 필요한 필수 항목들을 설치해 달라고 오류가 나거나, 별도 메시지 창을 제공했는데, 이번에는 별도 도구를 제공해서 한번에 필요한 요소들을 모조리 설정해주는 편리한 도구가 생겼는데, 바로 그것이 “Install software prerequisites”  이다.

실행하면 다음과 같은 항목들을 알아서 구성해준다.

  • Application Server Role, Web Server (IIS) Role
  • Microsoft SQL Server 2008 Native Client
  • Hotfix for Microsoft Windows (KB976462)
  • Windows Identity Foundation (KB974405)
  • Microsoft Sync Framework Runtime v1.0 (x64)
  • Microsoft Chart Controls for Microsoft .NET Framework 3.5
  • Microsoft Filter Pack 2.0
  • Microsoft SQL Server 2008 Analysis Services ADOMD.NET
  • Microsoft Server Speech Platform Runtime (x64)
  • Microsoft Server Speech Recognition Language - TELE(en-US)
  • SQL 2008 R2 Reporting Services SharePoint 2010 Add-in

먼저 설치되어 있으면 건너뛰고, 없으면 설치하도록 되어 있다.
이 모든 진행은 마법사 화면으로 되어 있으며, Next만 누르면 거의 완료된다.

설치 중간에 재 시작이 될 수 있는데, 로그인만 하면 자동으로 실행되므로, 반드시 설치했던 계정으로 계속 로그인 하도록 한다. (대개 특별한 계정을 만들지 않으면 Administrator 계정일 것이다. )

모든 설치가 완료되면 다음과 같은 요약화면이 뜬다.

완료가 되었으면 이제 SharePoint 자체를 설치한다. 
아래와 같은 초기 화면이 닫혔다면 다시 설치파일을 실행해서 화면에 나오게 한다.

이제 앞서 클릭했던 “Install software prerequisites” 다음 항목인 “Install SharePoint Foundation”을 선택하도록 한다.

자동으로 새로운 설치 진행 준비가 완료되면 다음과 같이 설치 종류를 물어본다. 하나는 Standalone 설치이고 다른 하나는 Server Farm 설치이다. SQL DB를 별도로 구성하려면 Server Farm을 해야 되지만, 이를 위해서는 Active Directory 까지 준비가 되어 있어야 한다. 그 정도 되면 여기서 설명하는 범위가 벗어나므로 그냥 Standalone으로 구성한다. 자동으로 SQL DB와 SharePoint 모듈이 모두 설치되며, 심지어는 자동으로 팀 사이트까지 만들어 놓게 된다.

여튼 Standalone을 선택한다.

모든 설치는 자동으로 진행된다, 끝날 때까지 기다리면 된다.

완료가 되면, 체크 박스와 함께 Finish 버튼이 나오는데, 체크 박스를 끄고 Finish를 한다. 다음 단계는 SharePoint 구성인데, 이 체크 박스의 체크의 의미가 그 SharePoint 구성 도구를 자동으로 띄울 것인지를 묻는 것이다.

우리는 SharePoint 구성 전에 , SQL Server 2008 R2에 대한 업데이트를 먼저 진행할 것이다.

 

SQL 2008 R2로 업그레이드 및 DB 관리도구 설치

SharePoint 가 2010이 되면서 SQL Server 2008 R2를 지원하게 되었는데, 이를 통해 업데이트 된 사항이 바로, FILESTREAM이라는 기능이다. 이 기능은 BLOB 즉 대용량 바이너리 파일을 DB에 직접 넣지 않고, 공유 폴더 같은 곳에 넣어주는 기능이다. SharePoint의 최대의 단점이 바로 이 바이너리 파일을 직접 DB에 넣는 문제라고 볼 수 있는데, 이 부분을 상당 부분 개선할 수 있다.

그렇지만, 이 FILESTREAM 기능을 사용하려면, SQL DB 자체의 설정 변경이 반드시 필요하다. 그 작업을 위해서는 당연한 것이지만, SQL Server가 2008 R2 이여야 하며, 또한 SQL Management Studio 가 필요하다.

이제부터 그 작업이라고 보면 된다.

먼저 MS SQL Server 2008 R2 Express with Tools 라는 것을 받는다. 반드시 With Tools 버전을 받는다. 다른 Express 버전과는 다르게, 이 버전은 SQL Managment Studio가 탑재되어 있다. 물론 별도로 받아 설치할 수 있지만, 한번에 받는 것이 더 편하다.

먼저 SQL Server 2008 R2로 업그레이드부터 한다.

SQL Server 2008 R2로 업그레이드

이 작업도 많이 애매한 편인데, 요즘 등록된 SharePoint Foundation 2010 에는 2008 R2 버전이 탑재되어 있다. 예전에 받아놓았던 SharePoint Foundation 설치 파일에는 그냥 2008만 담겨 있다.여튼 R2든 그냥 2008이든, 업그레이드 과정을 먼저 시도한다.

설치용 실행파일을 실행하면 Server 설치도구가 뜬다.

좀 메뉴가 복잡하게 되어 있는데, 왼편 Installation 항목을 클릭해서 화면을 전환한 뒤, 3가지 항목 중에 가운데에 위치한, Upgrade from SQL Server 2000, SQL Server 2005 or SQL Server 2008 을 클릭하도록 한다.


그러면 EUL 승인 화면이 뜨는데, 적당히 하고 Next를 하면, 대부분의 화면에서는 자동으로 넘어간다.

완료되면 정리된 요약 화면이 뜬다. 해당 서버 설정에 따라 Reboot를 요청하기도 하는데, Reboot를 해주도록 한다.

다시 서버 설치용 도우미 화면으로 돌아가도록 한다. 그리고 난 뒤, 이번에는 “New Insatllation or add features to an existing installation” 항목을 클릭한다.

무언가 자동으로 설정을 체크하고 자동으로 휙휙 넘어간다. EUL 화면이 뜨면 반드시 승인하고 넘어가도록 한다.

그러면 아래와 같은 선택화면이 나오는데, 모두 선택하도록 하자. 굳이 분리해서 구성할 정도로 옵션이 많지도 않기 때문에, 체크 박스 모두 선택한 뒤 Next를 클릭한다.

다음은 SQL의 인스턴스를 선택하는 부분인데, 여기서는 기존에 있는 인스턴스에 덧붙이는 형태로 한다. 그래서 선택 버튼에서도 Named Instance로 선택되어 있다. 특별히 변경하지 않고 그대로 진행한다.

다음은 서비스 동작 계정인데, 이 부분 역시 기본값으로 둔다.

이부분은 SQL 인증 방식인데, 만일 원격에서(다른 PC에서)해당 SQL DB를 열여볼 일이 있다면,반드시 아래 화면과 같이 설정한다. Windows authentication mode는 AD 계정이 아닌 이상 내부에서 밖에는 열 수가 없다. 그러므로 반드시 Mixed Mode를 선택하도록 한다. 그리고 암호를 설정한다.

같은 화면의 탭에서 FILESTREAM을 선택하는데, 여기 안의 모든 항목을 체크하도록 한다.

Next를 클릭하면, 역시 오류 사항 자동 보고 인데 역시 그냥 두고 Next

자동으로 구성되면서 무엇인가 열심히 설치된다.

완료되면 완료 보고 페이지가 뜬다.

 

SharePoint Foundation 구성

이제 본격적인 SharePoint 구성이다. 원래 이 부분은 Server Farm 인 경우 복잡다단하게 되지만, Standalone으로 하는 경우에는 대부분의 설정이 자동으로 구성되기 때문에, 지켜 바라만 봐도 된다.

실행 방법은 Start –> All Programs –> Microsoft SharePoint 2010 Product 에 있는 SharePoint 2010 Products Configuration Wizard 를 실행하면 된다.

간단한 형태의 마법사가 뜬다.

Next를 누르면 경고 메시지가 뜨는데, 그냥 Yes를 클릭한다. 이 작업에서 자동으로 설정되고, 자동으로 껏다가 켜지는 항목들을 나열하는 부분인데, 운영 중이 아닌 경우에는 무시해도 되는 항목들이다.

이제 설치를 가만히 지켜본다.

완료되면 Finish를 클릭한다. 그러면 자동으로 만들어진 웹사이트가 뜬다. 웹사이트 주소는 http://컴퓨터이름 이다.

현재 로그인한 계정의 ID와 암호로 로그인하면 된다.

 

간단하게 구성한 SharePoint는 여기까지. 설치 작업은 예전 WSS 3.0 보다 훨씬 간단해지고, 단순해진 것 같다.
더욱이 자동적으로 설치 환경을 꾸며주는 기능은 칭찬을 주고 싶다.

이 외에도 실제로 활용하려면, 몇몇 부분을 손봐야 겠지만, 당장 사용하는데에는 큰 문제가 없을 것이다.

728x90

Visual Studio를 써서 팀 작업을 할 때, TFS(Team Foundation Server)를 활용할 때가 있는데, 단순한 소스 버전관리를 벗어나서 실제 각 작업에 대한  계획이나, 한 내용들을 기입할 수 있다.

Agile 기반으로 프로젝트를 만들었다면 Bug, Issue, Task, Test Case, User Story 등 원한 형태로 생성이 가능하다.
지금 현재는 Task들을 정리해서 기록하여 정리하고 있다.
그런데, 2010 부터는(정확히는 2008 부터 되는 것 같으나, 2008은 사용해본 기억이 없음) 이 Task들을 계층적으로 적용할 수 있다고 한다. 그래서 마치 MS Project 에서 Task 밑에 Task 개념으로 표시하는 방법으로 구성할 수 있다.

몇가지 삽질을 하고 난 뒤, 그 표현 방법을 소개하려고 한다.

1. Task 생성.

Task 생성은 간단하다. 일단 Team Explorer를 띄우고 Work Items 위에서 메뉴를 띄워 New Task를 선택한다.

간단하게 만들도록 한다. 최소한 제목만 제대로 넣어도 된다.
그리고 Assigned To: 에서 자신의 이름을 꼭 넣도록 하자. 그래야 자신의 내용을 쉽게 찾아 볼 수 있다.
그리고 Save Work Item을 꼭 눌러서 내용을 저장해서 서버에 올리도록 한다.
 

2. 하위 Task 생성.

다시 Team Explorer 에서 Work Items –> Team Queries 안에서 My Tasks를 클릭해서 열도록 한다.
그러면 앞서 넣은 Task를 볼 수 있는데, 그 Task 에서 오른 쪽 클릭을 눌러 “New Linked Work Item”을 눌러
상위 혹은 하위 작업을 추가한다.

그러면 Link Type 선택과 기본적으로 필요한 이름과 설명 정도를 넣는 창이 나온다.

여기서 Link가 되는 형태(Link Type)에는 여러가지 종류가 있다.

  • Child : 앞서 선택한 작업을 Parent로 두는 하위 작업을 만들 때 사용한다.
  • Parent : 앞서 선택한 작업을 Child로 포함하는 상위 작업을 만들 때 사용한다.
  • Predecessor : 앞서 선택한 작업을 하기 위해 먼저 처리할 작업을 만들 때 사용한다.
  • Relate : 앞서 선택한 작업과 일부분 혹은 전부가 연관되는 형태의 작업을 만들 때 사용한다.(수평적 연결)
  • Shared Step : 앞서 선택한 작업을 수행하기 위한 공통적인 작업을 만들 때 사용한다.
  • Successor : ??
  • Test Case : 앞서 선택한 작업에 대한 테스트 작업을 만들 때 사용한다.
  • Tested By : ??
  • Tests

그런데,실제로 단순하게 계층형 작업 구성을 할 때는 Child와 Parent 만 사용할 것이다.
(프로젝트의 진행상 Task가 복잡하게 나열되면 거의 대부분의 유형의 Link들을 사용할 것 같다.)

일단, Child 든 Parent 든, Task를 만들도록 한다.

만든 뒤, 아랫쪽 정보들이 나온 탭 중에 All Link를 누르면 현재 설정한 대로 Link가 걸렸는지 체크가 가능하다.
(상위 작업의 Child로 만들었으므로, 상위 작업이 Parent로 표시)

확인이 되었으면 Save를 꼭해서 서버에 저장하도록 한다.

3. Query View를 바꾸기.

자, 그런데, Parent 관계를 세우기는 했는데, My Tasks를 열어 보면 가관이다.
아무리 링크를 걸고 넣어도 나오는것 쭉 나열형 뿐!

이를 계층형으로 표시하는 것을 바꿔야 한다.
바꾸려면, 보기를 위한 Query를 수정한다.
수정하려는 Query 항목에서 메뉴를 띄운 뒤, Edit Query를 한다.
여기서는 어차피 My Tasks만 보니까, 당연히 My Tasks에서 Edit Query를 해본다.

다른 부분은 손대지 말고, Type of Query 부분에서 Tree of Work Items를 선택한다.

어떻게 나오는지 체크해보려면 아래 쪽에 있는 Task들에서 Refresh를 해서 보도록 한다. 그러면 최소한 어떠한 형태로 나오는지 미리 보여준다.

이제 테스트 까지 완료되었으면 Save Query 버튼을 눌러 꼭 저장하고 닫도록 한다.

그러면 다음 부터는 계층형으로 Task를 볼 수 있다.

 

4. 기존 Task들을 계층화 시키기.

위의 방법은 새로운 Task를 추가할 때 이야기라면, 이번에는 기존에 만들어진 Task들의 관계를 맺을 때다.

만일 기존에 “예전작업”이라는 Task가 있었는데, 이 작업을 상위 작업 아래에 넣는 방법을 예제로써 언급할 것이다.

먼저 예전 작업이든, 상위 작업이든, 연결의 중심이 될 항목에서 메뉴를 띄워 “ Link to An Existing Item…”을 선택한다.

그러면 이 기준 작업(여기서 선택한것은 예전 작업)을 기준으로 어떻게 누구를 붙일 것인지를 입력할 수 있는 창이 뜬다.

이 예전 작업이 상위 작업아래로 들어갈 테니, Parent로 고치고…

Work item IDs 에서 Browse 버튼을 클릭해서 기존 Item을 찾는다.

연결된 Item이 위치한 Project를 선택하고(특별한 경우가 아니면 그대로 둔다.) Saved query 중에서 원하는 아이템이 보이는 Query를 선택한다.
그리고 하위에 Find 버튼을 눌러서 아이템을 나열시켜 원하는 아이템을 선택한다.
( 느낌표 표시가 난 Task는 자기 자신으로 선택하지 말자! )

OK를 누르면 항목이 자동으로 채워진다. 그림으로 확인해보고, 이상 있으면 수정하고, 없으면 OK를 클릭한다.

그럼 위의 내용대로 해당 Task의 수정화면이 뜨는데, 내용을 적당히 수정하고, 상단의 Save Results을 클릭한다.

728x90

2. Visual Studio 2010 Deployment Project

Visual Studio 안에 배포 프로젝트를 만들 때 사용하는 도구가 있다. Visual Studio 2002 때 부터 이미 존재는 했었고, Windows Installer의 버전과 .NET 내 지원 여부에 따라 몇번의 개정은 있었지만, 2005 때 부터의 기능적인 변화는 크게 없다. 그래서 생각보다 제작하기는 쉽다.

문제는 커스터마이징 부분이 많다. 현재로는 이 커스터마이징에 대한 벽에 부딪혀 더 이상의 진행은 잘 안되고 있다. 지금까지 파악된 내용을 정리하도록 하겠다.
여기서는 현재 개발도구가 Visual Studio 2010이여서 Visual Studio 2010을 기준으로 설명할 예정이다.
그리고 영문판이다 - -;;;

1. 프로젝트 생성 및 배포 대상 구성.

프로젝트를 생성하는 방법은 간단한다.

메뉴에서 File -> New -> Project를 선택한다.

그러면 새로운 프로젝트의 유형을 묻는 창이 뜨는데, 왼편의 Tree 에서 Other Project Type -> Setup and Deployment -> Visual Studio Installer 를 선택한다.(만일 Install Sheild가 없다면 Setup and Deployment 에서 바로 보인다.

selectproject

프로젝트 종류 중에 Setup Project를 선택한다. 그리고 .NET Framework 종류를 2.0을 선택하도록 한다.
요즘 최소한 .NET Framework 2.0 정도는 설치되어 있으니 2.0으로 선택하는 것이 좋을 것이다. (4.0 같은 것을 설치하면 나중에 배포 할 때 .NET 4.0 배포 처리를 해야 한다.

그리고 프로젝트이름을 적절히 정하고, 프로젝트가 위치할 곳도 정하도록 한다. 그리고 OK를 누르도록 한다.

최초 생성되면 신규 솔루션 파일안에 이 배포 프로젝트만 달랑 있는데, 실제 배포할 프로그램이 있는 프로젝트를 연결하도록 한다. 여기서는 예제로 필자가 기존에 재미삼아 만든 프로젝트를 포함해보도록 한다.

solutiontree 
배포할 것은 바로 GetLottoNum 에서 만들어진 Exe 파일을 올리는 것으로 판단하면 될 것이다.

2. 배포될 파일 구성.

먼저 배포 프로젝트에서 오른쪽 버튼을 클릭한다.
그러면 나오는 컨텍스트 메뉴에서 View -> File System을 선택한다.
selectview_filesystem

그러면 중앙 화면에 배포 파일 위치들이 나오게 된다.
filesystem_view

팬이 두개가 나오는데 그 중 왼편이 일종의 Tree 같은 것이고, 오른편이 왼쪽에서 선택한 폴더의 내용을 보여주는 부분이다. 최초 기본값으로 만들어진 내용은 총 3가지의 폴더의 형태를 가지고 있다.
Application Folder에는 배포할 때 배포 위치에 저장될 파일목록을 기록하는 내용이다.
두번째의 User's Desktop은 바탕화면을 의미한다.
마지막의 User's Programs Menu는 시작을 눌러서 나오는 프로그램 메뉴를 의미한다.

즉 두번째와 세번째에 위치한 User's Desktop과 User's Program Menu에는 일종의 아이콘들을 넣는 곳이라고 보면 되고, 첫번째에 위치한 Application Folder가 바로 실제 응용 프로그램들이 담기는 위치를 의미한다.

일단 왼편 트리에서 Application Folder를 선택한다. 그리고 오른쪽 빈공간에서 오른쪽 버튼을 클릭하여,
Add -> Project Output.. 을 선택한다.
addproject001

그러면 다음화면과 같은 Project 내 추가할 그룹들을 선택하게 된다.

selectprojectgroups

먼저 Project 에서 추가시킬 프로젝트를 선택한다.

그리고 난 뒤 하단에 위치한 종류를 원하는 대로 선택한다.

  • Primary output : 프로젝트를 빌드하면 출력되는 최종 결과물. 보통 Exe 나 Dll 이된다.
  • Localized resource : 언어별로 만들어진 Resource Dll 들이 된다.
  • Debug Symbol : 만일 빌드하는 형태가 Debug인 경우 pdb 같은 디버그 관련 정보 파일들이 된다.
  • Content Files : 프로젝트내에서 프로젝트 파일들을 Source가 아닌 Content로 선택한 내용들을 복사해온다.
  • Soruce Files : 프로젝트에서 빌드하기 위해서 있는 Source 들을 복사해온다.
  • Documentation Files : 프로젝트 내에서 문서로 분류해놓은 파일들을 복사해온다.
  • XML Serialization Assembles : XML 시리얼라이즈로 구성된 XML 파일들을 복사해온다.

보통은 Primary output을 하지만, 간혹 content 나 Localized resource를 포함하는 경우가 있다. 또 기본값 설정을 위해 XML Serialize 구성이 되어 있다면 XML Serialize Assemblies를 포함해야 한다. 원하면 여러개를 선택하여 한꺼번에 넣을 수 있다. Ctrl 키를 눌러 다중 선택이 가능하다.

그리고 Debug/Release 별로 나누고 싶을 때는 Configuration 부분을 적절히 선택하면 된다.

여기서는 Primary output을 선택하도록 한다.

3. 바탕화면, 시작메뉴에 프로그램 바로가기 만들기.

아이콘으로 된 바로가기를 만드는 작업을 한다.

왼편 트리에서 User's Desktop 을 선택하고, 오른편에서 오른쪽 버튼을 클릭하여, Create New Shortcut을 선택한다.
그러면 아래와 같은 선택 창이 나오는데, 앞서 설정한 Application Folder 안에 있는 Primary output을 선택하도록 한다.
select_newshortcut

OK를 누르면 알아서 자동으로 바로가기가 추가된다.적당한 이름으로 변경해준다.

이번에는 User's Programs Menu 이다.

바탕화면은 바로 만들었지만, 시작 메뉴는 하위에 폴더를 먼저 만들도록 한다. 시작메뉴 바깥에 그냥 만드는 경우도 있지만, 대개의 경우에는 폴더를 구성해서 그 폴더 안에 바로가기가 들어 있다. 그러므로 가급적이면 다른 프로그램 처럼 구성하는 것이 좋다.

startmenu_examples

앞서 바탕화면에서 했던 작업과는 별도로 한가지 더 작업이 있는 것이다. 폴더를 만드는 것.
여기서는 Get Lotto Number 이라는 폴더를 만들고 그 안에 바로가기를 만든다. 폴더를 만드는 방법은 해당 위치에서 오른쪽 버튼을 눌러 Add -> Folder를 선택하면 된다.
새로 만들어진 폴더를 클릭하고 앞서 만든 바로가기 처럼 추가하면 된다.

createshortcutforstartmenu

그냥 이렇게 만들어진 바로가기는 이쁘지 않으니, 해당 바로가기를 선택한 뒤, Properties 창에서 Icon 부분을 클릭해 새로운 아이콘을 넣도록 한다. 넣는 방법은 Properties 중에서 Icon 부분을 클릭하면 드랍다운 창이 드는데 그 중 (Browse..) 를 선택한다 그러면 선택창이 나오는데, Application Folder를 선택하고, Add File을 선택한다.
그리고 적당한 ico 파일을 선택하면 자동으로 Application Folder로 들어간다. 새롭게 Application Folder에 들어간 icon 파일을 선택하고 OK를 클릭한다.

selectnewicon

4. Build

오른편에 위치한 솔루션 트리에서 Deployment 프로젝트를 선택하고 오른쪽 버튼을 클릭해 Build 혹은 Rebuild를 선택한다. 그러면 자동으로 빌드를 하고 해당 프로젝트 하위에 각 프로젝트 형태(Debug/Release) 형태로 폴더를 만들어 결과물을 만들어 낸다.

5. 선결 설치 내용 정의하기.

개발 환경에는 개발을 위해서 다양한 선결 조건이 먼저 구축되어 있다. 최소한 .NET 프로그램을 만들기 때문에, 당연히 이에 필요한 .NET Framework가 버젼별로 구성되어 있다. 하지만, 이 프로그램을 설치할 PC에서는 해당되는 구성요소가 없을 수 있다. 이를 위한 설정을 해야 한다.

이를 위해서는 Deployment Project에서 오른쪽 버튼을 클릭하여 Property에 들어간다.
deploymentproejctproperty

속성창 하단에 위치한 Prerequisites 버튼을 클릭하도록 한다.
그러면 각종 선결작업으로 사용될 패키지들이 보인다. 만일 원한하는 패키지가 없다면 MS 사이트에서 업데이트 받으면 된다. ( 중간에 보이는 Check Microsoft Update for more redistributable component 를 클릭해도 된다. )
prerequisite

만일 이 프로그램을 설치하는 사람들이 인터넷을 사용할 수 없다면 맨 아래쪽에 선택하는 것들 중에 중간을 선택하도록 한다. 그러면 배포 패키지 안에 설치본이 자동으로 들어간다. 예를 들면, .NET Framework 3.0 같은 경우 인터넷에서 다운받아서 설치하게 끔 되어 있은데, 2번째를 선택하면 이미 전체를 다운 받은 버전을 설치본에 넣어줘서 인터넷 접속없이도 설치가 가능하게 된다. (가급적 2번째를 선택하는게 설치 작업을 빠르게 끝낼 수 있다.)

위에 나열된 내용은 Microsoft SDK 라는 곳에 있는 버젼별 SDK 안에 Bootstrapper 의 Package 안의 내용을 보여준다. (아래 캡쳐 화면에 있는 주소줄 위치로 보시면 된다. )

bootstrappers

각 폴더 안에는 설치본들이 담겨 있으며, 자동으로 설치되는 설정이나, 버젼 체크 방법을 위한 도구들이 같이 담겨 있다. 이 패키지를 만드는 방법은 다음 사이트를 참고하도록 한다.

http://msdn.microsoft.com/en-us/library/ms165429.aspx (Creating Bootstrapper Packages )
http://msdn.microsoft.com/ko-kr/library/ms165429.aspx

6. 인스톨러 추가 기능 만들기.

사실 Visual Studio 안에서 이 설치 프로젝트를 수정하는 방법이 애매하다.
그래서 추가적인 기능을 덪붙이기는 쉽지는 않다.
대신 방법은 Exe 나 Dll 을 통해 처리하도록 할 수 있다.

여기서는 간단하게 DLL 프로젝트로 만들도록 한다.
현재 Deployment Project가 있는 솔루션에 Class Library 프로젝트를 하나 만든다.
installeraddon

References(참조)에서 .NET 중, System.Configuration.Install 을 추가하도록 한다.

그리고 현재 Main Class 에 System.Configuration.Install.Installer 클래스를 상속 받게 한다.

classinheritance

안에 다음과 같은 함수들을 추가한다. "override" 라는 키워드를 치면 인텔리센스를 통해 자동으로 대부분 나오게 된다.

  • Install
  • Uninstall
  • Commit
  • Rollback

꼭 만들필요는 없지만, 원하는 이벤트의 형태에 따라 만들면 된다.

  • OnBeforeInstall
  • OnAfterInstall
  • OnBeforeUninstall
  • OnAfterUninstall
  • OnBeforeCommit
  • OnAfterCommit
  • OnBeforeRollback
  • OnAfterRollback

각 실행지점에 대한 설명을 하고 싶지만, 애석하게도 명확히 구분이 안되서 필자역시 여기가 한계다.

일단 이런 DLL이 만들어지면, 다음에는 Deployment Project로 돌아가도록 한다.

이제 Application Folder에 위의 프로젝트의 결과물을 넣도록 한다.
View -> File System을 선택한 뒤, 위의 프로젝트의 Primary Outputs를 넣도록 한다.

이 예제대로면 아래와 같이 2개의 Primary output이 들어가 있을 것이다.

primaryouts2

그리고 View -> Custom Actions를 클릭하여 Custom Actions 창을 띄우도록 한다.
창이 떴으면 원하는 단계에서 오른쪽 버튼을 클릭하여 Add Custom Action.. 을 클릭한다.
(만일 모든 단계에 포함하고 싶으면 트리의 최상단에 있는 Custom Actions에서 하면 된다).

addcustomactions

그러면 선택화면이 뜨는데, 그 중 Application Folder 안에 있는 Primary output 중에 앞서 만든 Installer 를 선택한다.

selectinstallerprimaryoutput

등록이 성공하면 Install 아래에 한가지의 Action이 추가되었을 것이다. 이 Actions을 선택하고 속성창을 열도록 한다.

actionproperties 

여기서 반드시 확인해야 하는것이 바로 InstallerClass 부분이다. 반드시 이 부분이 True로 되어 있어야 한다.

그리고 이 사용자 정의 Installer에 정보를 별도로 제공하려면, CustomActionData를 사용해야 한다.
마치 파라미터를 통해 데이터를 주듯 주면 된다.
예를 들어 설치 폴더의 정보를 주려면,

/DestDir="[TARGETDIR]\"

이라는 값을 CustomActionData 속성으로 넣어야 한다.

만일 그 외의 값들을 추가적으로 주려면, 한칸 띄고 그 옆에 / 하여 계속 붙여서 보내주면 된다.

/내부이름=값

위의 형식을 기억하면 간단한 것이다. 여러개인 경우 /내부이름1=값  /내부이름2=값  /내부이름3=값 … 이런식으로 넣는다. 또 값안에 공백이 있는 경우에는 반드시 " " 를 통해 막아서 보내도록 한다.

위의 예제에서 보면 /DestDir="[TARGETDIR]\" 라고 했는데, 값 부분에서 맨 끝에 \ 가 들어가 있다.
정확히는 왜 이런지는 모르겠는데 안들어가면 오류가 난다. 아마도 내부 변수 ([TARGETDIR] 같은 것들)를 사용하면
오류가 발생하는 것 같다.

이렇게 전달되는 값을 프로그램안에서 쓰려면 아래와 같이 하면 된다.

destdir_paramtest

this.Context.Parameter 를 통해 값을 전달 받는 것이다.

이를 통해 인스톨러 내에서 사용되는 각종 값을 수신하는 것이다.(상태값, 입력값 등등)

7. Launch Condition.

각 구성요소의 실행 조건을 미리 만들어 놓는 곳이다.

View -> Launch Conditions 를 선택하면 나온다.

왼편 폴더가 보이는데 그 중 Search Target Machine이 바로 IF문을 만드는 부분이다.
종류는 총 세가지가 있다.

  • File Search
  • Registry Search
  • Windows Installer Search

각각 파일이 존재여부로, 레지스트리의 특정값이 존재여부로, 마지막으로 Windows Installer로 설치된 ID로 있는지 없는지를 판단하여 true/false로 결정되는 사항이다.

하위에 있는 Lauch condition인데, 여기서는 외부에서 실행될 내용을 연결할 때 사용되는 부분이다.

앞서 만든 Custom Action들 중에 특정 조건에 해당할 때만 실행되도록 만들려면, 먼저 Search Target Machine에서 해당 조건을 만들고, 이를 가지고 Lanch Condition을 만든다. 이를 Custom Acition 의 속성안에 설정한다.

 

 

사실 이 프로젝트를 이용하여 좀더 커스터마이징을 가해서 원하는 형태로 뽑아내고 싶었다.
이 Deployment Project는 Visual Studio로 만드는 모든 프로젝트 결과물을 가장 효율적으로 묶을 수 있기 때문에, 사용성은 우수하다. 하지만, 정말 원하는 기능을 추가하기 위해서는 제약점이 너무크다. 그나마 커스터마이즈 율이 제일 큰게 외부 모듈을 이용해 Action을 정의할 수 있는 부분인데, 그 마저도 애석하게도 한계점이 자주 보인다.

(아직 조사가 끝난 것은 아니지만, UI를 제어할 방법이 있는지를 명확히 모르겠다.)

시간이 허락되면 나중에 이 Installer에 대한 자세한 파악이 병행될 필요는 있어보인다.

728x90

이 글은 하인도님의 2009년 12월 11일에서 2009년 12월 17일까지의 미투데이 내용입니다.

728x90

+ Recent posts

728x90