• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

'분류 전체보기'에 해당되는 글 1250건

  • 2010.10.08 Team Foundation Server 2010에서 계층형 Task 적용 방법
  • 2010.09.29 Windows 7 & 2008에서 NTFS 권한 초기화
  • 2010.09.29 멋진 컨텐츠 그러나 최악의 도서
  • 2010.09.16 앱스토어 리뷰가이드 라인
  • 2010.09.13 Mac Book 수령기.
  • 2010.09.10 (pjyoung 님 댓글 답변) ActiveX HTML에 박기. 4
  • 2010.09.09 여친님 Cyworld
  • 2010.09.08 Installer 구현 정보 정리 - 2

Team Foundation Server 2010에서 계층형 Task 적용 방법

기술자료/개발도구 2010. 10. 8. 10:15

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
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

Windows 7 & 2008에서 NTFS 권한 초기화

기술자료/OS 2010. 9. 29. 16:43

NTFS로 포멧된 폴더에 다양한 사용 권한을 걸어 사용하다가,
운영체제를 자주 변경하는 경우, 데이터용으로 사용한 파티션의 파일들이
알 수 없는 권한이 걸려 Access Denine이 걸리는 경우가 많다.

보통 C:\는 운영체제용으로 사용하고, D:\를 데이터로 하는데, C:\ 야 설치 중에 Format을 하니, 큰 문제가 없지만, 백업 처럼 사용하는 D:\ 드라이브에서는 어떻게 될지 모른다. 특히 공유 폴더들을 설정하거나, 개인용 폴더 설정등을 하다가 보면, 자신도 모르게 파일 권한이 변경이 되어 있고,
나중에 운영체제를 바꿔서 해당 폴더를 접근하려다 보면, 접근 불가에 빠진다.
그렇다고 속성을 열어서 이렇게 저렇게 수정해봐도 도저히 불가능한 경우에도 빠지게 된다.

이 경우 보안 속성을 어떻게든 초기화 해야 하는데, 이 경우에 처리하는 방법이다.

1. 시작 –> cmd를 검색 –> cmd를 관리자 권한으로 실행한다.

2. 권한을 바꾸려는 폴더 이름이 D:\Works 면 다음과 같이 입력한다.

icacls D:\Works /T /Q /C /RESET

만일 드라이브 전체라면, 해당 드라이브로 옮겨가서 D:\Works 대신 * 라고 넣는다.

icacls * /T /Q /C /RESET

3. 기다린다.

 

파일이 많으면 생각보다 긴 시간이 소요된다.
이렇게 바꾸면 최소한 기존에 설정된 각종 보안 설정 값들이 초기화 되서, 접근 되지 않는 경우가 많이 없어진다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

멋진 컨텐츠 그러나 최악의 도서

잡글 2010. 9. 29. 08:56
꿈속에서 만나요 꿈속에서 만나요
무라카미 하루키(Haruki Murakami), 윤병모 | 세시 | 20100630
평점
상세내용보기
| 리뷰 더 보기 | 관련 테마보기

무라카미 하루키의 정신세계는 다른 여타 저작 소설들만 봐도,
어느정도 파악될 정도로 유명하다.
정말 재미 있다. 그가 소설을 쓰기 전에 따로 적은 네타(글 소재들)들이 
가득 담겨 있는 내용이라, 이야기의 흐름은 없지만,
혼란스럽기도 하며, 판타지스럽고, 현실적인 내용들이 모두 담겨 있다.
읽어보면 정말 희안한 관점으로 희안하게 내용을 보는 구나 싶다.

하지만, 이 번역본은 최악이다.
단편 단편, 갑자기 떠오른 듯한 단어들 별로 이야기가 약 1~2페이지 분량으로
되어 있는데, 각 이야기 별로 오타가 최소 1개씩은 있다.(심하게는 한 에피소드에서 오타 퍼레이드까지..) 그냥 웃어 넘길 수 있는 레벨의 오타가 아니였다. 
심지어는 고유 명사 마저도 그런 식으로 오타를...
점점 눈에 심하게 띄니까, 이젠 내용을 왜곡하는 느낌까지 받는다 
이야기 자체가 눈에 잘 들어오지도 않아 다시 처음 부터 읽는 경우도 발생했다.


무라카미 하루키만의 색다르며 재치넘치는 언어 표현들은 
말끔히 거세당한 기분이다.

나중에 일본에 들를일이 생기면, 이 책의 원판이나 구해봐야 겠다.
중고본이겠지만,  차라리 그 만의 색을 보여주는 내용을 직접 구해서 봐야 겠다.


정말이지.. 인터파크 E-Book 컨텐츠들...

점점 정나미가 떨어지고 있다.
(이런 일이 어디 한두번이여야지 -_- 원 )

이글은 "인터파크도서"에서 작성되었습니다.
728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

앱스토어 리뷰가이드 라인

기술자료/ETC 2010. 9. 16. 10:25

이 모든 자료는 apple.com과 AppsNext.com에 그 권한이 있습니다.

(한글) 앱스토어 리뷰가이드 라인

제공: iPhone 개발의 모든 것- AppsNext.com   

우리는 당신이 iOS를 위한 어플리케이션을 개발하려고 하는 것을 매우 기쁘게 생각합니다. iOS 앱 개발은 직업적, 금전적으로 수많은 개발자들에게 도움을 주고 있는 작업이며, 우리는 당신이 이 성공적인 개발자들의 대열에 합류하길 기원합니다. 우리가 앱스토어 리뷰 가이드라인을 작성한 것은 이번이 처음입니다. 우리는 이 리뷰가 당신이 앱을 개발하는데 발생할 수 있는 문제에 대해 명확한 지침을 제공해줄 수 있을거라고 기대하며, 그로 인해 앱 승인 절차를 빠르게 할 수 있을거라고 생각합니다.

우리는 앱을 책이나 노래 따위의 우리가 취급하지 않는 것들과는 다르게 보고 있습니다. 만약 당신이 종교를 비판하고 싶다면 책을 쓰십시오. 만약 당신이 섹스에 대해 묘사하고 싶다면 책을 쓰거나 노래를 만들거나, 혹은 의학적 서류를 만드십시오. 구분하기 다소 복잡할 수 있습니다만, 우리는 그런 류의 컨텐츠들을 앱스토어에 등록하지 못하도록 결정하였습니다. 하기의 지침들을 인지하는 것이 당신들의 앱 개발에 도움이 될 것입니다.
많은 아이들이 앱들을 다운받고 있으며, 부모들이 별도로 아이들을 위한 컨트롤 장치를 세팅하지 않는 한 아이들의 앱 다운로드를 제어할 수 있는 방법은 없습니다. (많은 부모들이 보통 그 장치를 세팅하지 않습니다.) 우리가 아이들에게 나쁜 영향을 주지 않도록 항상 주의하고 있음을 주지하십시오.
앱스토어에는 250,000개가 넘는 앱들이 있습니다. 더 이상의 의미없는 앱들은 필요없습니다. 당신이 만든 앱이 실용적 으로 쓸모있거나 혹은 지속적인 즐거움을 제공할 수 없다면 우리는 그 앱을 승인하지 않을 수 있습니다.
만약 당신이 만든 앱이 고작 며칠 사이에 조잡하게 만들어졌다고 보이거나, 당신의 친구들에게 보여주기 위해 연습용 으로 만든 앱을 스토어에 올릴 경우 해당 앱들은 승인 받지 못할 것입니다. 많은 전문 앱 개발자들은 자신들의 양질의 개발물이 아마추어들이 유희로 만든 것들과 같이 앱스토어에 전시되는 것을 원하지 않습니다.
우리가 판단하기에 선을 넘었다고 보이는 컨텐츠나 행동을 다룬 앱은 승인을 거부당할 수 있습니다. 당신이 그 기준이 무엇이냐고 묻는다면, “보면 알것입니다.” 라고 대답하겠습니다. 우리는 당신들 역시 그 기준을 충분히 인식할 수 있을 거라고 생각합니다.
만약 당신의 앱이 승인을 거부당했을 경우, 당신은 우리가 제공하는 Review Board를 통해서 이를 어필할 수 있습니다. 당신이 이런 프로세스를 따르지 않고 언론사에 우리를 비난한다고해서 그 문제를 해결하지는 못할 것입니다.
이 가이드라인은 지속적으로 업데이트될 수 있습니다. 만약 새로이 개발된 앱이 새로운 문제점을 야기할 경우 우리는 새 룰을 언제든 추가할 수 있습니다.어쩌면 당신이 만든 앱이 그것을 불러올지도 모릅니다.

마지막으로, 우리는 당신이 개발하는 앱을 매우 좋아하며 당신이 하는 일들에 존경심을 가지고 있습니다. 우리는 앱 개발에 있어서 당신의 능력을 최대한 발휘할 수 있는 최고의 플랫폼을 구축할 수 있도록 노력하고 있습니다. 어쩌면 당신이 보기에 우리의 통제가 지나치다고 생각할지도 모르지만, 만약 그렇다면 그건 우리가 고객의 입장에서 생각하고 그들이 우리의 제품을 통해 양질의 경험을 할 수 있도록 신경쓰기 때문 일 겁니다. 그런 생각은 당신들 대부분도 아마 마찬가지일겁니다.

목차

1. 약관
2. 기능성
3. 메타데이터, 등급, 순위
4. 지역
5. 알림서비스 (푸쉬 노티피케이션)
6. 게임센터
7. 전자광고
8. 상표, 상품외장
9. 미디어 컨텐츠
10. 유저 인터페이스
11. 구입, 통화
12. 긁어오기, 종합
13. 기기에 손상
14. 개인적인 공격
15. 폭력성
16. 거부감을 주는 컨텐츠
17. 사생활
18. 포르노그래피
19. 종교, 문화, 인종
20. 컨테스트, 경품, 복권, 추첨
21. 자선, 기부
22. 법적 요구사항

1. 약관

1.1     앱스토어의 어플리케이션을 개발하는 개발자로서 당신은 Program License Agreement (PLA), Human Interface Guidelines (HIG), 그 외에 다른 애플과 맺은 라이센스 혹은 계약들에 종속된다. 하기의 룰과 예시는 당신이 만드는  앱이 승인을 받는데 도움을 주기 위한 것이지 다른 협의문을 수정하거나 그에 종속된 조항을 무효화하기 위함이 아니다.

2. 기능성

2.1     (시스템을) 고장내는 앱은 승인하지 않는다.
2.2     버그가 발견되는 앱은 승인하지 않는다.
2.3     개발자가 명시한대로 작동하지 않는 앱은 승인하지 않는다.
2.4     문서 상의 설명과는 일치하지 않는 숨겨진 요소 혹은 불법적 요소를 포함한 앱은 승인하지 않는다.
2.5     공개되지 않은 API(어플리케이션 프로그래밍 인터페이스)를 사용한 앱은 승인하지 않는다.
2.6     할당된 공간 외의 곳에서 데이터를 읽거나 쓰는 앱은 승인하지 않는다.
2.7     어떤 방식이나 형태로든 코드를 다운받는 앱은 승인하지 않는다.
2.8     다른 실행 가능한 코드를 인스톨 혹은 실행시키는 앱은 승인하지 않는다.
2.9     “베타”, “데모”, “체험판” 혹은 “테스트” 버전인 앱들은 승인하지 않는다.
2.10   아이폰 앱은 별도의 조정없이 아이패드에서도 사용할 수 있어야한다. 해상도는 아이폰과 동일, 아이폰3GS의 2배 이다.
2.11   앱스토어에 이미 있는, 그중에서도 특히 유사한 종류 여럿이 존재하는 앱을 복제한 앱은 승인하지 않는다.
2.12   실용적으로 유용하지 않거나 지속적인 오락적 가치를 제공하지 못하는 앱은 승인하지 않는다.
2.13   마케팅이나 광고가 주목적으로 제작된 앱은 승인하지 않는다.
2.14   명확하게 명시되지 않은 속임 혹은 가짜 기능을 제공하기 위해 만들어진 앱은 승인하지 않는다.
2.15   20메가가 넘는 크기의 앱은 무선 네트워크를 통해서 다운로드할 수 없다. (앱스토어에서 자동적으로 이를 방지함)
2.16   멀티태스킹 앱은 백그라운드 서비스를 그것들의 기본적인 목적에 맞게 사용해야한다.
          (예: 인터넷전화, 오디오 플레이백, 지역, 과제수행, 지역 공지 등)
2.17   웹브라우징하는 앱은 IOS WebKit framework와 WebKit Javascript를 반드시 사용해야한다.
2.18   알코올 혹은 법적으로 금지된 물질의 과도한 소비를 조장하거나, 미성년자의 음주 및 흡연을 조장하는 앱은 승인 하지 않는다.
2.19   잘못된 진단결과 혹은 기타 부정확한 기기 정보를 제공하는 앱은 승인하지 않는다.
2.20   앱스토어에 유사한 앱의 여러가지 버전을 올려서 “스팸질”을 하는 개발자는 iOS 개발자 프로그램에서 퇴출한다.

3. 메타데이터 (이름, 설명, 등급, 순위 등)

3.1     다른 모바일 플랫폼의 이름을 명시한 메타데이터를 포함한 앱은 승인하지 않는다.
3.2     플레이스홀더 텍스트를 포함한 앱은 승인하지 않는다.
3.3     앱 설명에서 앱 컨텐츠, 기능과 상관없는 기술을 한 앱은 승인하지 않는다.
3.4     아이튠스 커넥트 상에 표시되는 앱의 이름과 기기 상에 표시되는 앱의 이름은 서로 비슷해야한다.
          이는 혼란을 피하기 위한 목적이다.
3.5     앱의 큰 아이콘과 작은 아이콘은 혼란을 피하기 위해 서로 비슷해야한다.
3.6     4세 이상 등급을 지키지 않은 앱 아이콘과 스크린샷을 포함한 앱은 승인하지 않는다.
3.7     앱 컨텐츠에 맞지 않는 카테고리, 장르를 표기한 앱은 승인하지 않는다.
3.8     개발자는 자신의 앱에 적합한 등급을 매길 책임이 있다. 부적합한 등급은 애플이 수정할 수 있다.
3.9     개발자는 자신의 앱에 적합한 키워드를 부여할 책임이 있다. 부적합한 키워드는 애플이 수정하거나 삭제할 수
          있다.
3.10   거짓 리뷰, 돈을 주고 작성한 리뷰, 혹은 기타 부적합한 방법으로 유저 리뷰 혹은 앱스토어 상의 차트 순위를 조작 하거나 부풀리려는 시도를 한 개발자는 iOS 개발자 프로그램에서 퇴출한다.

4. 지역

4.1     지역 데이터를 수집, 전송, 혹은 사용하기 전에 해당사항에 관해 사용자의 합의를 공지하지 않거나 득하지 않은 앱은 승인하지 않는다.
4.2     지역 데이터에 근거한 API를 통해 자동차, 비행기 혹은 기타 기기들의 자동, 자주적인 조작을 하고자 하는 앱은 승인하지 않는다.
4.3     지역 데이터에 근거한 API를 통해 발송, 차량관리, 혹은 긴급 서비스를 하고자 하는 앱은 승인하지 않는다.

5. 알림서비스 (푸쉬 노티피케이션)

5.1     APN(애플 푸쉬 노티피케이션) API를 사용하지 않은 알림서비스를 제공하는 앱은 승인하지 않는다.
5.2     애플로부터 푸쉬 어플리케이션 ID를 득하지 않고 APN 서비스를 사용하는 앱은 승인하지 않는다.
5.3     사용자 합의를 먼저 득하지 않고 알림서비스를 보내는 앱은 승인하지 않는다.
5.4     알림서비스를 통해 민감한 개인정보, 혹은 비밀정보를 보내는 앱은 승인하지 않는다.
5.5     알림서비스를 통해 원하지 않는 메시지를 전하거나, 피싱 혹은 스팸의 목적으로 만들어진 앱은 승인하지 않는다.
5.6     앱의 알림서비스를 이용하여 광고, 프로모션, 혹은 어떠한 직접적 마케팅도 해서는 안된다.
5.7     앱의 알림서비스 사용료를 사용자들로 하여금 부담하게 해서는 안된다.
5.8     알림서비스를 통해 네트워크 용량 혹은 APN 서비스의 대역폭을 과도하게 사용하거나 기기에 지나친 부담을 주는 앱은 승인하지 않는다.
5.9     바이러스, 파일, 컴퓨터 코드, 혹은 APN 서비스의 정상적인 기동을 방해하거나 손상을 끼치는 프로그램을 전송하는 앱은 승인하지 않는다.

6. 게임센터

6.1     플레이어 ID를 최종사용자 혹은 제3자에게 보여주는 앱은 승인하지 않는다.
6.2     어떠한 목적으로든 플레이어 ID를 사용하는 앱은 승인하지 않는다. 단, 그것이 게임센터 약관에 근거하였을 경우는 논외로 한다.
6.3     룩업, 트레이스, 릴레이트, 어소시에이트, 마인, 하베스트 등을 역추적하여 플레이어 ID, 가명 혹은 기타 게임센터를 통해 얻을 수 있는 정보를 이용하고자 하는 개발자는 iOS 개발자 프로그램에서 퇴출한다.
6.4     순위권 점수 따위의 게임센터 정보는 게임센터의 승인을 받은 앱에서만 사용할 수 있다.
6.5     게임센터 서비스를 통해 원하지 않는 메시지를 전하거나, 피싱 혹은 스팸의 목적으로 만들어진 앱은 승인하지
          않는다.
6.6     게임센터 서비스를 통해 네트워크 용량 혹은 APN 서비스의 대역폭을 과도하게 사용하는 앱은 승인하지 않는다.
6.7     바이러스, 파일, 컴퓨터 코드, 혹은 게임센터 서비스의 정상적인 기동을 방해하거나 손상을 끼치는 프로그램을
          전송하는 앱은 승인하지 않는다.

7. 전자광고

7.1     인위적으로 광고의 시청수나 조회수를 올리고자 하는 앱은 승인하지 않는다.
7.2     아무 내용이 없는 전자광고 배너를 달고 있는 앱은 승인하지 않는다.
7.3     광고를 보여주는 것이 주목적인 앱은 승인하지 않는다.

8. 상표, 상품외장

8.1     개발자들은 애플 상표 및 저작권 사용에 관한 가이드라인과 애플 상표 리스트에 명시된 모든 약관에 근거하여 앱을 제작해야 한다.
8.2     애플이 앱의 소스나 공급자라고 주장하거나 애플이 앱의 품질이나 기능을 보증한다는 내용을 주장 혹은 암시하는 앱은 승인하지 않는다.
8.3     애플 제품이나 광고 주제와 혼동할 수 있을 정도로 유사한 앱은 승인하지 않는다.
8.4     앱 이름 상에 애플 제품 이름의 철자를 잘못 적었을 경우 (예, GPS for Iphone, iTuz) 해당 앱은 승인하지 않는다.
8.5     법적으로 보장되는 제3자의 권리(상표, 저작권, 기업비밀, 기타 등록된 컨텐츠)를 사용할 경우 요청 시 서류화된 사용권을 제출해야한다.
8.6     오리지널 컨텐츠의 기능에 변화가 없고 해당 브랜드에 관해 모든 것을 명확히 확인할 수 있다는 전제 하에서 구글 맵스 API를 통해 습득한 구글 맵스 및 구글 어스 이미지는 어플리케이션 내에서 사용할 수 있다.

9. 미디어 컨텐츠

9.1     음악 라이브러리에 접속 시 MediaPlayer framework를 사용하지 않는 앱은 승인하지 않는다.
9.2     아이팟 인터페이스를 흉내낸 사용자 인터페이스를 가진 앱은 승인하지 않는다.
9.3     무선 네트워크를 통한 오디오 스트리밍 컨텐츠는 5분 간 5메가 이상 사용하지 않도록 한다.
9.4     무선 네트워크를 통한 비디오 스트리밍 컨텐츠는 10분을 초과하는 경우 HTTP 라이브 스트리밍을 사용해야하며, 기본 64kbps 오디오만 사용한 HTTP 라이브 스트림을 포함해야한다.

10. 사용자 인터페이스

10.1   모든 앱은 애플 아이폰 Human Interface Guidelines과 애플 아이패드 Human Interface Guidelines에 맞춰 제작해야 한다.
10.2   앱스토어, 아이튠스스토어, 아이북스토어를 포함한 아이폰 상에 기본으로 제공되는 번들 앱과 유사한 앱은 승인 하지 않는다.
10.3   애플 아이폰 Human Interface Guidelines과 애플 아이패드 Human Interface Guidelines에 명시된대로 버튼이나  아이콘 등을 제대로 제공하는 시스템이 없는 앱은 승인하지 않는다.
10.4   변경된 데스크탑/홈 스크린 환경을 만들거나 멀티앱 위젯 환경을 시뮬레이션하는 앱은 승인하지 않는다.
10.5   볼륨 업/다운 및 벨소리/진동 스위치 같은 기본적인 스위치 기능을 변경하는 앱은 승인하지 않는다.
10.6   애플과 애플의 고객들은 심플하고 세련되며 창의적이고 좋은 아이디어에서 나온 인터페이스를 높이 평가한다.
          이러한 인터페이스를 만들기 위해서는 더 많은 노력이 필요하지만, 그럴만한 가치가 있는 일이다.
          인터페이스에 관한 애플의 기준치는 높다.
          만약 당신의 사용자 인터페이스가 복잡하거나 좋지 않을 경우 해당 앱을 승인하지 않을 것이다.

11. 구입, 통화

11.1   락을 풀어서 앱스토어 이외의 메커니즘에서 추가적인 기능을 사용할 수 있도록 하는 앱은 승인하지 않는다.
11.2   앱 상의 구매 API (IAP) 이외의 시스템을 통해 앱 상의 컨텐츠, 기능, 혹은 서비스를 구매할 수 있도록 하는 앱은 승인하지 않는다.
11.3   IAP를 통해 어플리케이션 외에서 쓰이는 상품이나 서비스를 구입할 수 있도록 하는 앱은 승인하지 않는다.
11.4   IAP를 통해 신용이나 다른 통화를 구입하는 앱의 경우 해당 신용을 어플리케이션 내에서 소비해야한다.
11.5   IAP를 통해 만료된 신용이나 다른 통화를 구입하는 앱은 승인하지 않는다.
11.6   IAP를 통한 컨텐츠 가입은 최소 30일 동안 유지되어야하며, iOS를 사용하는 기기를 가진 모든 사용자들에게 공개 되어야한다.
11.7   IAP를 통해 물품을 구입하는 앱의 경우 정확한 구입기능이 있어야한다.
11.8   IAP를 통해 카메라나 자이로스코프 따위의 iOS에 내장된 기능에 접속할 수 있는 권한을 구매할 수 있도록 하는 앱은 승인하지 않는다.
11.9   “렌탈” 컨텐츠나 일정 기간이 지나면 만료되는 서비스를 포함한 앱은 승인하지 않는다.
11.10   보험 어플리케이션은 무료여야하며, 배포되는 지역의 법을 준수해야한다. 또한, 해당 앱은 IAP를 사용할 수 없다.
11.11   전반적으로, 당신이 만든 앱이 비쌀수록 우리는 더 철저하게 리뷰를 할 것이다.

12. 긁어오기, 종합

12.1   애플 사이트(예: apple.com, 아이튠스스토어, 앱스토어, 아이튠스커넥트, 애플 개발자 프로그램 등)로부터 정보를 긁어오거나 애플 사이트와 서비스의 컨텐츠를 이용해서 순위를 만드는 앱은 승인하지 않는다.
12.2   어플리케이션은 아이튠스스토어 RSS feed 따위의 승인받은 애플 RSS feeds를 사용해야 한다.
12.3   웹상의 자료를 잘라온 것이나 컨텐츠 모음, 혹은 링크모음 따위의 앱은 승인하지 않는다.

13. 기기에 손상

13.1   사용자들로 하여금 애플 기기를 기기를 손상시키는 방향으로 사용하게 유도하는 앱은 승인하지 않는다.
13.2   기기의 배터리를 급격히 소모시키거나 과도한 열을 발생시키는 앱은 승인하지 않는다.

14. 개인적인 공격

14.1   명예훼손, 공격적, 비열한 내용을 포함하거나 혹은 특정인이나 집단에게 해를 끼칠 수 있는 앱은 승인하지 않는다.
14.2   직업적 정치 풍자가나 유머작가는 공격적, 비열한 코멘트로 인한 금지 항목에서 제외한다.

15. 폭력성

15.1   사람이나 짐승이 살해당하는 모습, 불구가 되는 모습, 총에 맞는 모습, 칼에 찔리는 모습, 고문당하거나 다치는
          모습의 실제 이미지를 표현한 앱은 승인하지 않는다.
15.2   폭력이나 아동학대를 묘사한 앱은 승인하지 않는다.
15.3   게임 상의 “적”은 특정인종, 문화, 실존하는 정부나 회사, 혹은 그 어떤 실제적 존재를 단독으로 지목하여 만들어서는 안된다.
15.4   무기를 통한 폭력을 현실적으로 보여줘서 무기의 불법적, 난폭한 사용을 독려하는 앱은 승인하지 않는다.
15.5   러시안 룰렛을 포함한 앱은 승인하지 않는다.

16. 거부감을 주는 컨텐츠

16.1   과도하게 거부감을 주거나 상스러운 컨텐츠를 보여주는 앱은 승인하지 않는다.
16.2   주로 사용자를 기분나쁘게 하거나 역겹게 하기 위한 목적으로 제작된 앱은 승인하지 않는다.

17. 사생활

17.1   모든 앱은 사용자 정보 사용에 관해 사전에 사용자의 허락없이, 그리고 사용자로 하여금 해당 정보가 어디서 어떻게 사용될 것인지에 관해 알려주지 않은 채 사용자 정보를 전송할 수 없다.
17.2   구동을 위해서 이메일 주소나 생년월일 따위의 사용자 개인정보의 공유를 필요로 하는 앱은 승인하지 않는다.
17.3   미성년자를 대상으로 정보수집을 하는 앱은 승인하지 않는다.

18. 포르노그래피

18.1   웹스터 사전에서 정의한 “생식기관의 노골적 묘사, 그리고 미적이나 감성적인 느낌이 아닌 에로틱한 느낌을 유발하기 위한 목적의 노골적 행위를 표현한 것”에 해당하는 포르노물을 포함한 앱은 승인하지 않는다.
18.2   수시로 포르노물에 해당하는 내용이 등장하는 사용자 제작 컨텐츠를 포함하는 앱(예: “채트 룰렛” 앱)은 승인하지 않는다.

19. 종교, 문화, 인종

19.1   특정 종교, 문화, 혹은 인종에 대해 명예훼손, 공격적, 비열한 태도를 취하고 있거나 해당 그룹에게 피해를 끼칠 수 있는 코멘트 혹은 문헌을 포함한 앱은 승인하지 않는다.
19.2   앱이 종교적인 텍스트를 포함할 경우, 텍스트 상의 멘트나 번역은 정확해야한다. 코멘트는 선동적이라기보다는 교육적이거나 정보전달 차원에서 그쳐야한다.

20. 컨테스트, 경품, 복권, 추첨

20.1   경품 및 컨테스트는 앱의 개발자/회사가 후원하여 제공해야한다.
20.2   경품 및 컨테스트에 관한 공식적인 룰이 앱 상에 표기되어야하며, 해당 행위에 관해 애플이 관련이 없다는 점을 명확히 해야한다.
20.3   복권 앱을 만들기 위해서는 개발자가 법적 허가를 득해야하며, 복권 앱은 해당 3가지 특성을 모두 갖추고 있어야 한다: 배려, 기회, 상금
20.4   사용자로 하여금 직접적으로 복권이나 추첨티켓을 살 수 있도록 하는 앱은 승인하지 않는다.

21. 자선, 기부

21.1   자선단체에 기부할 수 있는 기능을 포함한 앱은 무료여야한다.
21.2   기부금의 모금은 사파리 상의 웹사이트나 SMS를 통해 이뤄져야한다.

22. 법적 요구사항

22.1   앱은 사용자에게 공개되는 지역의 법적 요구사항을 충족시켜야한다. 모든 지역법을 이해하고 따르는 것은 개발자 들의 의무사항이다.
22.2   허위사실, 사기, 호도된 정보를 포함한 앱은 승인하지 않는다.
22.3   범죄 혹은 난폭한 행위를 요청, 촉진, 장려하는 앱은 승인하지 않는다.
22.4   불법적 파일 공유를 가능케하는 앱은 승인하지 않는다.
22.5   카드 카운터를 포함한 불법적 도박을 조장하기 위해 만들어진 앱은 승인하지 않는다.
22.6   익명 혹은 장난스러운 전화나 SMS/MMS 메시지 전송이 가능한 앱은 승인하지 않는다.
22.7   부정한 방법으로 사용자의 패스워드나 기타 개인정보를 알아내고자 하는 목적으로 앱을 만든 개발자는 iOS 개발자 프로그램에서 퇴출한다.

이 문서는 지속적으로 업데이트되는 문서임

이 문서는 개발자들이 앱스토어에 제출하는 앱을 우리가 어떻게 리뷰하는지 알려줍니다. 또한 우리는 이 가이드가 당신이 앱을 개발하고 제출하는데에 있어 도움이 될 수 있기를 바랍니다. 이 가이드는 새로운 앱과 상황이 발생함에 따라 지속적으로 업데이트되는 문서이며, 변경사항이 있을 경우 주기적으로 이를 반영할 계획입니다.
iOS의 앱 개발에 참여해주셔서 감사합니다. 비록 이 문서가 당신이 하지 말아야할 것들로 가득하긴 하지만, 그보다 훨씬 짧더라도 당신이 꼭 해야하는 것들의 리스트를 꼭 기억해두시길 바랍니다. 무엇보다도, 사용자들을 놀라게 하고 기쁘게 하는 것에 동참 해주시길 바랍니다. 그들에게 창조적인 길을 보여주고, 이전에는 볼 수 없었던 방법으로 소통할 수 있도록 해주십시오. 우리의 경험에 의하면 사용자들은 기능적으로나 사용자 인터페이스적으로 세련된 것에 적극적으로 반응합니다. 조금 더 노력하셔서 그들에게 그들이 기대하는 이상을 보여주십시오. 그들이 이전까지 본 적이 없는 세계를 보여주시기 바랍니다. 우리는 당신을 도울 준비가 되어있습니다.


*위 문서는 개인 블로그 ,카페등에 가져가실수 있지만, 반드시 문서의 출처 Appsnext.com 을 명기해주시기 바랍니

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

Mac Book 수령기.

잡글 2010. 9. 13. 20:51

사실 Mac Book을 사고는 싶었는데, 그 가격이나, 금전적인 타이밍이 계속 맞지 않아 미루고 있었다.

그러다가, 저번 주 금요일(2010-09-10 일경) 오전에 우연히 맥북 관련 검색을 했었고,
확인해보니 딱 100만원에 판매하는 것을 보게 되었다.
게다가 배송비 무료!
( http://itempage.auction.co.kr/detailview.aspx?itemNo=A543950391 )

설마 설마 하는 마음에 이런 저런 부분을 살펴보는데, 새 제품 같기는 했다.
하지만, 왜 100만원이라는? 리퍼가 아닐까?

의문 반, 호기심 반으로 지름신이 살콤시 내 머리에 앉아버렸다.
하지만 무턱 대고 지르기에는 무리.
일단, 결재가 가능한지, 여친님께 타진을 했다.
”맥북… 사도 돼? 애플에서 나온.. 그 허연 노트북. 아이폰 개발에 쓸.. .그.~”
하며, 오전에 출근하자 마자, 결재 타진.
물건에 대해서는 잘 모르겠지만, 일단 필요한 거면 사라는 긍정적 답변!

그래서 그 즉시 결재 진행!
차근 차근 결제관련 내용을 살펴보자, 추선선물 이벤트로 16개월 무이자 행사까지.
얼씨구나 하는 마음에 16개월 할부로 구매했다.

금요일 당일 날 퀵을 통해 전달 된다고 했는데, 애석하게도 그날은 회사 워크샵 일자.
아버지께 수락을 부탁드리고, 난 워크샵을 갔다. 그리고 여친님 남동생 결혼식까지
참석 한 뒤, 토요일 저녁 즈음에 그 물건을 만질 수 있었다.

맨 처음 받을때는 재활용 종이로 된 박스로 싸여 있었다. 일단 테이프를 끊고..
SANY0041
안을 살콤이… 그리고 4방향으로 잡고 있는 가이드를 들어내고 본체가 담긴 박스를 꺼냈다.
SANY0042
호호.. 비닐로 포장된 알맹이. 이 알맹이를 을매나 갖고 싶었는지.. 기쁜 마음에 비닐 걷어내고
박스를 열어보았다.
 SANY0044 SANY0045
뭔가 꽉차게 포장되어 있는데다, 스티로폼 재질의 쿠션들이 덕지 덕지.일단, 하나씩 열어본다.

SANY0046
꺼내자 본체가 스티로폼 비닐에 싸여 있고, CD와 메뉴얼이 담긴 얇은 박스. 그리고 아답타가 보였다.
거두 절미… 본체의 껍데기를 벗기고 알맹이를 까봤다.
SANY0047 
흐흠. 예전 ASUS Netbook을 구매한적이 있는데, (1008HA) 그것보다 더 매끄러운 재질!
SANY0048
알맹이를 까자, 이번엔 키보드와 LCD 사이를 보호하기 위한 스티로폼!
SANY0049
아답타를 연결하기 전. 아답터와 전원 케이블을 연결했다. 고무가 조금은 딱딱해서 일반 전선 말듯이하기 보다는 철사줄 매듯 돌돌 감기는게 더 자연스럽다. 게다가 아답터가 무슨 장난감 같이 생겨서 나름 이쁘장 했다.
SANY0050 
아답터 연결하고 첫 부팅. 가운데 사과그림.!
SANY0051
기타 메뉴얼과 설치용 DVD가 담겨 있었다. 아주 간단한 패키지 이지만,
나름 깔끔하게 구성되어 있는 제품이였다.

부팅한 뒤, 제일 먼저 한 것은 역시 XCode 설치.
Apple 계정 만들고 개발자 등록한 뒤, 설치를 해보았다.
예전에 해킨토시 할때는 이것 저것 걸리는게 많아 제대로 설치조차 안되던데,
역시.. 맥이니까 바로 설치되고 제대로 동작하는 것 같다.

일단 간단하게 사용해 보니까, 먼저 터치패트가 예술이였다.
상당히 널찍한데다가, 손가락 1개일때, 2개일때, 3개일때, 그리고 4개일때 액션을
나누어 자유롭게 쓸 수 있게 한 부분이나, 패드 자체가 클릭이 되어 나름 인상적이였다.
애들도 쉽게 적응할 수 있는 굉장히 직관적인 I/F 인 것 같다.

카메라가 달려 있어, 간단한 자기 사진정도는 등록할 수 있었다.
그리고 방열구가 LCD 아래쪽 흰지 안쪽으로 되어 있어, 좌측이나 우측에서 뜨거운 바람을
맞을 일은 없었다. 그래서 생각보다 인상적으로 사용하는데, 문제는 어느정도 열이 쌓이자,
전체적으로 뜨뜻해지는 것 같았다. 역시 무릎위에 얹어 놓고 쓰기에는 무리가 있어 보인다.

키보드는 전체적으로 보기에는 이쁘긴 한데, 생각보다 띄엄띄엄 놓여 있어,
IBM 호환기종을 쓰던 사람에게는 좀 낫설었다.
아, 그리고 한/영 전환의 개념이 Windows와는 달랐다. Windows에서는 자판 배열이 한글이면, 한글 자판 안에 한글/영어가 혼재되어 있어, 한/영키를 누르면 입력 언어를 언제든 바꿀 수 있었지만,
맥에서는 한글 키보드는 한글만, 영문 키보드는 영문만 입력한다.
그래서 한글을 칠때는 한글 키보드를, 영문을 칠때는 영문 키보드를 꺼내야 했다.
이거.. 생각보다 좀 불편하긴 했다.

뭐 UI가 이쁘던, 사용성이 어쨌던, 일단 IPhone App 개발이 1순위 목표이기 때문에,
현재로는 별 불만이 없다. 게다가 블리자드 게임이 돌아간다. ( 스타2, 와우 등등 ) ㅋ

아직은 개발 코드를 더 자세히 보지 않아 감은 안오지만, 나름 괜찮을 것 같다!

이런 깜짝 이벤트 ( 100만원에 팜! ) 언제 또 있을지 모르겠다. – 오늘 보니까, 이미 마감상태 -

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

(pjyoung 님 댓글 답변) ActiveX HTML에 박기.

기술자료/Web 2010. 9. 10. 10:19

댓글을 이용해서 pjyoung 님께서 질문을 남겨주셨는데요.( http://www.hind.pe.kr/805#comment6147213 )
내용을 읽어보다가, 잠시 대기라는 느낌이 들어 글을 남김니다.

지금 OBJECT 태그를 이용하시는 것까지는 맞는데요. CODEBASE 부분의 Tag 부분이 잘못된 것 같습니다.
CODEBASE라는 부분의 의미는 Object 태그가 들어간 페이지를 브라우저를 통해 띄울 때,
해당 ActiveX가 없을 때 어디서 받아가지고 오는 것인지 알려주는 부분입니다.

은행권 사이트를 예를 들어볼께요.(ActiveX 범벅이라 참 좋은 예제 같습니다 -_-;;; )
먼저 한번도 들어가본적이 없는 은행권 사이트에 접속을 합니다.
그 은행권에서 사용하는 보안용 ActiveX의 GUID가 33e6b301-a928-438d-b3b1-733bfc68ccdb 라고 하죠.
그 은행권 사이트에 접속하는 IE에서는 자신의 컴퓨터 안에 저 위의 GUID에 해당하는 ActiveX가 있는지 검색합니다.
당연히 있으면 띄우고 없으면 CODEBASE에 설정된 정보를 따라 들어가 다운로드 받고 설치합니다.
그 때 IE에서 보면 주소바 아래쪽에 노란색 바 같은게 뜨잖아요?
바로 그 행동을 한다고 사용자에게 알려주는 부분입니다.
그러나 여기서 잠시… 이 CODEBASE에 담기려면, 인증서가 배포 파일 안에 있어야 됩니다.
공인인증서 같은 것인데, 프로그램 배포용 공인인증서 입니다.
그거 안들어가면 IE에서 설치 못합니다.
(바이러스 따위로 인지해버린다는 거죠.)

아래의 링크를 보시면 알겠지만, 그 CODEBASE에 관련된 내용이 자세히 나와있습니다.

.http://digitalangelmaster.wordpress.com/2008/02/15/기존-activex-control-업그레이드/

 

그런데 위의 내용은 어떻게 보면 실험용이라기보다는 실전용의 의미에 가깝습니다.

만일 그냥 웹페이지에 띄우는 실험이나 자체적인 연습이라고 한다면 다르게 접근하시면 됩니다.
먼저 CODEBASE 부분을 삭제하시구요.
다음은 그 ActiveX를 띄우는 PC에 ActiveX를 강제적으로 설치하는 것입니다.

C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm /codebase “xxxxxxxx/form.dll”

저 위의 명령이 바로 그 ActiveX를 강제적으로 설치하는 것입니다.
아예 미리 PC 안에 설치되어 있으면 IE 에서는 군말 없이 띄웁니다. 즉 위의 명령을 써서, 직접 PC에 인스톨을 하는 것입니다. 그러면 특별한 코드상의 문제만 없다면 화면에 뜰 것입니다.

한번 확인해보세요.
(제가 해보고 싶었지만, 지금 밀린일이 좀 많아서 테스트는 안해봤어요 -_- ;;;)

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

여친님 Cyworld

잡글 2010. 9. 9. 12:49

예전에 몇번 이야기를 할 때마다 가족간의 싸이 이야기가 많았다.
언니들 싸이라든가, 어머님의 싸이라든가..

나야, 원래 블로그를 운영하고 있었고, 지금은 tistory에 안착해서 잘 사용하고 있다보니,
그런 별도 개인 공간이 필요없어 거의 사용하지 않았다.
그래도 이번에 문득 떠오른 김에 여친님 싸이로 가봤다.

아.. 그런데 글씨…이런 부분이 보이네..

Capture 

어머.. "삼촌" 이라니..

그럼 여친님이 내 조카? ㅎㅎ

여튼 뭐 조금 황당하긴 했지만 일단 일촌 신청하고, 팬 등록을 했다.
오늘은 아마도 연차를 쓴듯. 메신저에 안보여서 일촌 허락 요청은 안했다.

모레 만나면 부탁해야징.

PS. 친구인 고 작가의 미니 홈피갔더니만.. 얼라. "사촌" 이네. ㅎㅎ

Capture2

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

Installer 구현 정보 정리 - 2

기술자료/개발도구 2010. 9. 8. 22:36

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
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

  • «
  • 1
  • ···
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • ···
  • 157
  • »
250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2026/03   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

me2dayzm 협업 Buscuit 수 지름신 블로그 개발환경 Google Apps Engine 오류 twi2me Visual Studio java 불만 인터파크 매뉴얼 친구 me2sms me2photo windows 좀 Azure e-book 2010 비스킷 moss 것 SharePoint MOSS 2007 WSS Tutorial

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바