나타나는 에러 메시지는 "XXXX 파일을 찾을 수 없습니다. 사용 가능한 저장소가 부족하여 이 작업을 마칠 수 없습니다."
MSDN을 뒤져보니.. XXXXX 욕밖에 안나옴. -_-;;

Setup Projects failed to build with 'Not enough storage is available to complete this operation' error
--------------------------------------------------------------------------------
When you add large files to a Setup project, the following error appears after you try to build the Setup project: "Not enough storage is available to complete this operation" even if the local hard disk has available disk space. There may also be an increase of virtual memory usage during the build process.
To work around this error, add more RAM to the build computer, or try this workaround:
1.In the project, add a file that has the same name as the large file.
2.In the project properties page, set to installer to Package as Loose Uncompressed files.
3.Build.
4.Copy the full-sized large files to the build location.

컴파일 하는 PC의 메모리를 늘리던가 아니면 FAKE 파일을 넣어두고 나중에 빌드 후에 복사해 넣으라고 하심.
M$횽들... 일 좀 제대로 하삼 -_-;;

2010. 11. 16 추가.
메모리 용량을 2G에서 4G로 증설하였으나 동일 현상이 발생되어 확인해보니 VS2008을 Hacking해야 한다는 결론을 구글신께서 주심

이하 Windows7에서 설정한 부분임
1. 시작 > cmd > DOS창이 뜨면 "BCDEDIT /Set IncreaseUserVa 3072"
2. "devenv.exe" 백업
3. 시작 > 프로그램 > Visual Studio 2008 폴더 > Visual Studio Tools > "Visual Studio 2008 명령 프롬프트"실행
4. 명령 프롬프트 뜨면 "C:\Program Files\Microsoft Visual Studio 9\Common7\IDE\"로 이동
5. 명령 프롬프트 창에서 "editbin /LARGEADDRESSAWARE devenv.exe"
6. Reboot

이렇게 해본 결과 FAKE파일 만드는 것보다 적은 비용으로 (메모리 2기가 추가증설 3.5만원...) 빌드 잘됨.

추가정보 :
Windows7 64bit MEM 4기가 상태에서는 아주 잘됨 -_-;;

2010/11/14 18:28 2010/11/14 18:28

Link
1편/네트워크 연결하기-http://www.wolfpack.pe.kr/303
2편/Bluetooth사용하기-http://www.wolfpack.pe.kr/310
3편/모바일배포일반-http://www.wolfpack.pe.kr/314
4편/PC에서모바일배포-http://www.wolfpack.pe.kr/315

오늘 그냥 필받았다고 치고 원래는 다음주쯤에 해야할 배포 마지막을 밟아 보고자 한다.
지난번에 기본적인 원리까지 진행했는데 이제 구현할 차례이다.

1. PC 설치 프로젝트를 추가하자.
솔루션을 클릭하고 마우스 우클릭, 추가, 새프로젝트 클릭후에 위저드 화면에서 설치프로젝트로

사용자 삽입 이미지
2. 설치 프로젝트가 열렸다면 불필요한 폴더 다날리고 "응용 프로그램 폴더" 1개만 남겨 놓은뒤에 TestCAB이라는 폴더를 추가하자.
사용자 삽입 이미지
3. 우측 창을 클릭하여 TESTCAB 프로젝트 출력물을 추가하자.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
4. 응용 프로그램 폴더의 속성중 설치될 폴더가 있다. 너무 기니 알맞게 자르도록 하자.
사용자 삽입 이미지

* 현재 상태는 DefaultLocation이 "C:\Program files\FunnyWorld"가 된다. PCSetup프로젝트의 속성에 manufacturer 설정이 FunnyWorld이기 때문이다.
사용자 삽입 이미지
5. 이제 레지스트리를 추가하자.
* PCSetup프로젝트를 클릭하고 마우스 우클릭, 보기, 레지스트리를 차례로 클릭한다.
사용자 삽입 이미지
* PCSetup에 대한 레지스트리를 추가하도록 하자.
사용자 삽입 이미지
* "VS2008 Windows mobile 6 개발환경 구축 - 3" 말미에 미리보았던 그 구조이다.
- 우클릭후에 새로만들기로 추가하되 레지스트리에 표현되는 종류는 다음과 같다.
문자열값 - REG_SZ
확장 가능한 문자열 값 - REG_EXPAND_SZ
이진값 - REG_BINARY
DWORD - REG_DWORD
이상 4가지 타잎이 지원된다. 하지만 레지스트리에서 사용하는 것은 총 5가지 타잎으로 "다중문자열값(REG_MULTI_SZ)"가 지원되지 않는것이 좀 흠이랄까?
"VS2008 Windows mobile 6 개발환경 구축 - 3"에서 REG_MULTI_SZ로 보인것은 REG_SZ 타입으로 설정하자.

6. 레지스트리 설정이 완료되고나면 이제 설치후 "CEAppMgr.exe"을 실행시켜 주는 녀석을 만들자.
먼저 솔루션에 콘솔 프로젝트를 추가하였다. 윈도우에서 실행되는 것이라면 다른것도 관계없다. 알아서 취향에 맞게 추가하기만 하자.
사용자 삽입 이미지
이제 코딩이다. CEAppMgr.exe가 어디에 있는지 알아야 하니 레지스트리를 뒤져서 실행하도록 짜보자.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32; //레지스트리 관련 필수 추가

namespace runner {     class Program     {         static void Main(string[] args)         {             //레지스트리에 접근하여 값을 가져온다.             string regPath = @"Software\Microsoft\Windows\CurrentVersion\App Paths\CEAppMgr.exe";             RegistryKey rgkey = Registry.LocalMachine.OpenSubKey(regPath, true);             Console.WriteLine(rgkey);             String rtnPath="";             foreach (string Val in rgkey.GetValueNames())                 rtnPath = rgkey.GetValue(Val).ToString();                         //가져온 경로대로 실행한다.             System.Diagnostics.Process ps = new System.Diagnostics.Process();             ps.StartInfo.FileName = @rtnPath;             ps.Start();         }     } }



7. 노가다는 이제 끝나간다. 다시 PC설치용 프로젝트로 이동해서 앞에서 만든 Runner 프로그램을 출력에 추가하고 사용자 작업에 추가해주자.
- runner 프로젝트의 출력을 추가했음
사용자 삽입 이미지
- PCSetup프로젝트의 사용자 지정작업 클릭
사용자 삽입 이미지
- 설치 단계에 runner의 기본출력을 지정하였다.
사용자 삽입 이미지

8. 이제 최종 설치한번 해보자.
- 간단하게 솔루션 탐색기에서 PCSetup 프로젝트 선택후 마우스 우클릭하면 설치할 수 있다.
사용자 삽입 이미지
- 설치하고 나서 원하는 대로 추가/제거 윈도우가 나타난다.
사용자 삽입 이미지

9. 실재 설치후 테스트
- TESTCAB를 선택하자.
사용자 삽입 이미지
- 응용 프로그램 다운로드 완료라고 뜨고 Windows Mobile Device에서는 열심히 설치중이다.
사용자 삽입 이미지
- 설치완료모습
사용자 삽입 이미지


이로써 기본 윈도우즈 모바일 개발환경 구축은 완료되었다.
추가적으로 필요한 부분은 SDK를 구매하는 것을 권한다. 그러나, 일반 범용 어플리케이션은 에뮬레이터로 충분히 나아가 Bluetooth까지 지원하며 PC에서 손쉽게 설치하는 방법까지 공개하였으니 어렵지 않을것이다. 본 윈도우즈 모바일 개발환경 구축 관련 글은 개인 저작물이며 누구나 퍼나를수 있다. 그러나, 허락없이 퍼나르거나 동영상으로 포맷그대로 전환하신 분도 계시다. 쓰지말라고 올리는 것도 아닌데 방명록에 쓰겠다는 멘트만이라도 남겨주면 어떨까?

다음에 또 다른 지식을 나눠보도록 하자.
2009/03/11 15:21 2009/03/11 15:21
Link
1편/네트워크 연결하기-http://www.wolfpack.pe.kr/303
2편/Bluetooth사용하기-http://www.wolfpack.pe.kr/310
3편/모바일배포일반-http://www.wolfpack.pe.kr/314
4편/PC에서모바일배포-http://www.wolfpack.pe.kr/315

이번에는 PC에서 Mobile로 만든 CAB파일을 설치하는 방법에 대해 알아보자.
일단 Windows Mobile 개발이 능숙한 사람을 대상으로하니 자질구래하게 프로그램 소스까지 올리지 않도록 하겠다.

단계는 다음과 같이 한다.
1. Windows Mobile 프로그램 제작
2. Windows Mobile 배포 패키징
3. Regedit로 레지스트리를 건드려 ActiveSync 설치목록에 뜨도록 만들기
4. ActiveSync 설치관리자로 설치하기

1. TestDeploy라는 프로젝트명으로 어플리케이션을 하나 만들었다.

사용자 삽입 이미지
2. 이제 CAB으로 싸자
   1) 솔루션에서 새프로젝트를 추가하자.
사용자 삽입 이미지
   2) TESTCAB이라는 이름으로 모바일 설치 프로젝트를 생성
사용자 삽입 이미지
   3) "프로그램 폴더" 추가
사용자 삽입 이미지
   4) 쓸데없는 폴더는 날리자.
사용자 삽입 이미지
   5) 응용 프로그램 폴더를 클릭하고 추가
사용자 삽입 이미지
사용자 삽입 이미지
   6) 프로그램 폴더에 바로가기를 생성하자.
       - 프로그램 폴더 클릭후에 오른쪽 창에서 마우스 우클릭
사용자 삽입 이미지
      - 응용 프로그램 폴더안의 TestDeploy의 기본 출력(활성)을 선택
사용자 삽입 이미지
       - 파일이 생성되면 "Shortcut to TestDeploy의 기본 출력(활성)"이라고 쓰여져 있는데 한글은
         Ansicode로 변환하는데 실패할 수 있으므로 영문으로 바꾸자."Shortcut to TestDeploy"로
         한글만 지웠다.
   7) 이제 설치파일에 기록될 작성자나 뭐 기타 등등을 고쳐주자.
사용자 삽입 이미지
   8) 솔루션 전체를 빌드하자.
사용자 삽입 이미지
   9) ActiveSync의 "탐색" 기능을 이용하여 생성된 CAB 파일을 Windows Mobile에 옮겨 놓자
사용자 삽입 이미지
    10) 옮겨 놓은 모습
사용자 삽입 이미지
   11) 실행하자.
사용자 삽입 이미지
   12) 프로그램 메뉴에 있는지 확인하고 실행하자.
        - 한글이 깨지는 문제는 Widnows Mobile Emulator가 영문버전이기때문임. 한글버전은 문제
           없음.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
3. 이제 본격적인 PC를 통한 설치를 하기위해 사전 지식을 쌓아보자.
위에서 일련의 프로그램을 만들고 CAB으로 만들어 배포하는것을 해보았지만 문제는 이게 좀 귀찮다는 것이다. PC에서 Windows Mobile Device를 설치하는 기능이 있음에도 잘 안쓰니까 문제라고나 할까?

- ActiveSync의 프로그램 추가/제거 기능이 바로 그것이다.
사용자 삽입 이미지
- 프로그램 추가/제거를 클릭하면 설치할 수 있는 파일들이 뜬다.
사용자 삽입 이미지
이녀석들은 도대체 어디 있길레 이렇게 뜨는것일까? 시작>실행에서 "Regedit"를 실행하여 살펴보도록 하자.
결론부터 말하자면 여기에 존재한다.
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services\AppMgr\Apps

어랏? 많이 보던 녀석들 아닌가?
사용자 삽입 이미지
다시말해 레지스트리에 등록만 해주면 ActiveSync의 기능을 추가/제거 기능을 이용할 수 있을듯 하다.
다음은 "Adobe FlashLite"를 클릭해서 내용을 발취한후 TESTCAB에 맞게 수정한 것이다.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows CE Services\AppMgr\Apps\TESTCAB] "AppName"="TESTCAB" "Description"="" "IconIndex"=dword:00000000 "InstallDir"="D:\\Work_Source\\TestDeploy\\TESTCAB\\Debug" "ListCabFiles"=hex(7):54,00,45,00,53,00,54,00,43,00,41,00,42,00,2e,00,43,00,41,\   00,42,00,00,00,00,00 "ListCpuTypes"=hex(7):30,00,00,00,00,00 "Provider"="FunnyWorld"


실재 레지스트리를 살펴본 모습은 이러하다.
사용자 삽입 이미지

이렇게 레지스트리를 고쳤을때 실재 파일의 위치만 정확하다면 다음과 같이 프로그램 추가/제거 윈도우에서 뜬다.
사용자 삽입 이미지

이제 하나만 더해보자.
TESTCAB를 프로그램 추가/제거에 넣었다고는 하나 저기능을 자동으로 띄우지 못한다면 불편한것은 여전하다. 짧게 다시 결론부터 이야기하자면 저녀석의 명칭은 "CEAppMgr.exe"이다.
(프로그램 추가/제거 윈도우를 활성화 한상태에서 윈도우 작업관리자를 띄워 놓고 이름순으로 정렬한뒤에 프로그램 추가/제거창을 닫으니 사라지는 프로세스가 바로 저 이름이었다.)
어디에 있는줄은 모르겠지만 암튼 CEAppMgr.exe를 실행하면 된다니 이 녀석도 레지스트리에서 찾아보자.


\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\CEAppMgr.exe



위의 경로에 기본값으로 박혀 있다는 것을 확인 가능하다.
* 내경우는 "C:\Program Files\Microsoft ActiveSync\CEAPPMGR.EXE"이었다.

다음에 Windows Setup을 통해 CAB파일을 특정장소에 보관하고 레지스트리를 조작한 후에 CEAppMgr.exe를 실행해보도록 하자.
2009/03/10 15:57 2009/03/10 15:57
Link
1편/네트워크 연결하기-http://www.wolfpack.pe.kr/303
2편/Bluetooth사용하기-http://www.wolfpack.pe.kr/310
3편/모바일배포일반-http://www.wolfpack.pe.kr/314
4편/PC에서모바일배포-http://www.wolfpack.pe.kr/315

기대도 하지 않았던 삼성 U70체험단 당첨에 이은 체험기 올리느라 Mobile 개발 환경 구축에 시간을 할애하지 못하였다.
이제 지난 이야기에 이어 2번째 Windows Mobile Emulator에서 Bluetooth 사용법을 알아보도록 하자.

먼저 http://code.google.com/p/bthmsdevemul/ 로 방문해서 Emulator에서 블루투스를 사용할 수 있도록 해주는 Driver를 받자.

0.94 파일은 여기에
압축파일이니 알아서 풀도록하고 이제부터가 중요하다.

1. XP기준으로 제어판>하드웨어 탭에서 장치관리자 클릭
사용자 삽입 이미지
2. Bluetooth 장치의 드라이버 속성 클릭
(본 그림에서 하단의 연한 파랑색의 Bluetooth 장치는 USB장치로 현재는 미장착중임)
사용자 삽입 이미지
3. 드라이버 업데이트 클릭
사용자 삽입 이미지
4. 목록 또는 특정 위치에서 설치로 다음 클릭
사용자 삽입 이미지
5. 검색안함, 설치할 드라이버를 직접 선택후 다음
사용자 삽입 이미지
6. 디스크 있음 클릭
사용자 삽입 이미지
7. 압축해제한 곳의 하위 폴더중 WINXP 선택. (Vista는 Vista32선택)
사용자 삽입 이미지
8. 드라이버가 "FreeBT USB Driver"로 잡히면 다음 클릭
사용자 삽입 이미지
9. 설치중
사용자 삽입 이미지
10. USB 드라이버로 설치완료
사용자 삽입 이미지

이제 진짜 작동하는지 확인할 차례
먼저 .cetool 파일을 실행할 수 있는 프로그램이 필요하다.
Microsoft.com의 Download에서 "Remote Tools Framework"으로 검색하면 금방 나옴
현재의 URL : http://www.microsoft.com/downloads/det ··· 0a6a76e4

다운로드후에 또한번의 설치를!
사용자 삽입 이미지
설치가 완료되면 다시 압축해제한곳으로 가서 "RTFx Plugin"으로 들어가 BthEmulManager.cetool 파일을 더블클릭하면 디바이스를 선택하라고 뜨는데 개발하는 환경에 맞는 해상도를 선택하자.
(Omnia는 6.1의 480*800으로 선택)
사용자 삽입 이미지
이제 모든 작업이 막바지다. 이렇게 띄우면 Bluetooth 통신이 가능한 Emulator가 실행된다.
사용자 삽입 이미지
요녀석을 그대로 띄워둔채로 Visual Studio 2008의 도구에 있는 "장치 에뮬레이터 관리자"를 실행해보자
사용자 삽입 이미지
장치 관리자에 활성화 되어 있다.
사용자 삽입 이미지
실재 Emulator에서 Bluetooth 장치들이 잡히는지 확인 해볼까?
Emulator의 설정(Setting)에서 블루투스의 새장치 추가를 통해 주변 장치를 검색해보았다.
사용자 삽입 이미지
결과는 성공. 추가로 Debug도 가능!
사용자 삽입 이미지

다음 포스팅은 PC에서 설치파일을 실행해 크래들에 연결된 모바일 장치에 설치를 어떻게 하면 할 수 있는지 확인해보자.
(주로 CAB파일을 옮겨다 놓고 하지만 .NET Compact Framwork 3.5와 같이 런타임을 따로 설치하는것은 짜증나는일. 걍 PC에 놓고 손쉽게 배포하는 법을 알아보자.)
2009/03/04 15:00 2009/03/04 15:00
Windows mobile 6는 사실 Core가 Mobile 5와 동일하다.
다시말해 기죽지 말자.
아무튼 Smart Phone개발하려면 환경구축이 중요한데 특히 옴니아(Omnia)폰과 같이 고가의 장비를 갖춰서 개발한다는 아닌것 같다.

본 포스팅은 이런 환경을 구축하는데 노력이상의 비용을 지불하지 않는 선에서 환경구축을 완료하는데 그 목적이 있다.

1편 - Emulator에 네트워크 어떻게 연결할까?
2편 - Bluetooth를 Emulation할 수 없을까?
3편 - 만들긴 만들었는데 어떻게 배포하지?

Link
1편/네트워크 연결하기-http://www.wolfpack.pe.kr/303
2편/Bluetooth사용하기-http://www.wolfpack.pe.kr/310
3편/모바일배포일반-http://www.wolfpack.pe.kr/314
4편/PC에서모바일배포-http://www.wolfpack.pe.kr/315

이렇게 3부에 걸쳐 Windows Mobile 6 기반의 어플개발환경구축에대해 주저리주저리 떠들어 보자.

준비물은 Visual studio 2008 Express 이상이면 되고
Omnia같이 해상도가 800*480정도 되는 놈은 미쿡 이미지만 지원하므로 따로 다운로드 받는다.
일단은 Windows mobile 6 SDK부터 다운로드 받자.
http://www.microsoft.com/downloads/det ··· ang%3Den
그리고 480 * 800 개발용 이미지는 여기서 더 받도록 하자.
http://www.microsoft.com/downloads/det ··· ang%3Den

다운로드후 설치는 자동으로 OK.

XP라면 Activesync 4.5를 설치하고 Vista라면 디바이스 센터를 업데이트 한다.
여기서는 Activesync로 진행하겠다.
Activesync를 실행한후 "파일>연결설정"을 클릭한다.
다음과 같은 설정창이 뜨면 "다음 중 한가지 연결 허용"을 체크하고 DMA를 추가해둔다.
사용자 삽입 이미지
나머지는 Visual Studio 2008의 몫이다.
VS2008을 실행한후에 "도구>장치 에뮬레이터 관리자"를 클릭하여 관리자를 실행한다.
사용자 삽입 이미지
관리자 실행후에 해당 이미지를 클릭하고 마우스 우클릭하면 메뉴가 뜨는데 여기서 "연결"을 선택하자.
사용자 삽입 이미지
연결을 클릭하면 자동으로 이미지가 활성화되고 Emulator가 작동하기 시작한다.
사용자 삽입 이미지
에뮬레이터가 실행되면 다시 관리자에서 이미지를 선택하고 마우스 우클릭하여 "크레들에 놓기"를 선택하자.
사용자 삽입 이미지
이제 가상으로 크레들에 놓은것처럼 작동되어 동기화를 시작하게된다.
(동기화 설정은 생략함. 왠만하면 동기화 설정은 모두 언체크하여 하지 않도록 하자.)
사용자 삽입 이미지
마지막으로 연결이 완료되었는지 확인하자.
사용자 삽입 이미지
인터넷이 제대로 작동하는지도 확인하자. 본인의 PC가 인터넷이 연결안되어 있으면 말짱꽝이니 조심해서 체크 바란다.
사용자 삽입 이미지

2009/02/04 13:04 2009/02/04 13:04

Visual Studio를 사용하면서 Clickonce 배포를 한번이라도 해본 프로그래머라면 이런 화면 기억할 것이다.

사용자 삽입 이미지

Clickonce로 배포하기전에 사용자 클라이언트에 대한 설정을 해두면 다음과 같이 설치화면에서 자동으로 감지하여 추가 설치프로그램을 다운로드하여 설치한다.
사용자 삽입 이미지
* 게시자와 프로젝트는 임의로 제거하였으니 양해바랍니다.

아무튼 뭔가 좀 있어보인다.
특히 오라클과의 연동을 위해서는 필수적으로 Oracle Client가 깔려야 하고 그위에 나머지 DB Connection이나 기타 등등의 모듈이 올라가야 정상적으로 작동되는데 웹으로 배포하면서 Oracle Client는 CD로 들고 다니거나 사용자에게 어디어디서 받으라고 시키는 것은 웃기는 방법 아닐까?

* 주의! : 본 프로그램은 인트라넷에서 사용을 목적으로 철저히 통제된 환경이므로 가능하나 인터넷 서비스하는데 오라클 설치 시키는 바보는 없겠지? 인터넷에서는 SOAP 프로토콜을 활용하자.

아무튼 Clickonce 배포방식을 선택했다면 그에 맞도록 개발하려는 노력도 필요할것이고 그보다 우선하여 이와 같은 방식을 Framework에서 지원하여야 하는 것이다. 다행히 DotNetFramwork는 지원하고 있으므로 문제될 것이 없다. 이제 남은 것은 방법을 알고 실행에 옮기는 것 뿐이니 말이다.

1. 먼저 Oracle Client를 설치 파일로 만들자.
예전에 포스팅한 http://www.wolfpack.pe.kr/210를 참고하여 오라클 클라이언트 라이트 버전의 설치와 사용법을 먼저 숙지하자. (꼭 먼저 읽어 보아야 다음 설치파일 만들기가 이해될 것이다.)
다했다면 다음과 같이 설치 프로젝트로 Visual Sudio를 열자.
사용자 삽입 이미지

이름을 아무거나 주면 된다.
프로젝트가 생성되고나면 Oracle Lite Client 가 설정 되어 있는 경로의 파일들을 몽땅 추가해놓자.
사용자 삽입 이미지
다음은 추가해 놓은 모습으로 오라클 명령을 수행하는데 전혀 지장없는 것들은 남겨 놓고 불필요한것들은 삭제한후에 정리해서 넣어놓은 것이다.
사용자 삽입 이미지
추가가 되었다면 프로젝트 속성창에서 설치될 경로를 지정하자. 속성은 다음과 같이 프로젝트명을 우클릭한후 "보기", "파일시스템"을 클릭하고 파일시스템의 속성을 수정하면 된다.
사용자 삽입 이미지
사용자 삽입 이미지
* 기본 DefaultLocation을 "c:\program files\OCI"로 설정하였다.

설치될 Oracle Client의 레지스트리 파일을 수정할 차례이다.
위와 같은 방법으로 프로젝트명을 클릭한후 우클릭하여 "보기", "레지스트리"를 클릭하자.
사용자 삽입 이미지
다음과 같이 HKEY_CURRENT_USER에 "Environment"라는 키를 만들고 다음과 같이 "LD_LIBRARY_PATH", "Path", "TNS_ADMIN"을 설정한다.
사용자 삽입 이미지
위의 최종 화면을 보면서 다음과 같이 하면 간단히 해결된다.
먼저 Path를 설정해보자. 빈 화면에서 우클릭하여 "새로 만들기", "확장 가능한 문자열 값"을 선택한후에 이름을 "Path"라고 하고 속성창에서 Value부분을 추가한다.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
나머지 2개 "LD_LIBRARY_PATH", "TNS_ADMIN"도 추가하되 "Path"와는 다르게 "문자열 값"으로 설정하자.
사용자 삽입 이미지
속성과 키값은 "Path"설정과 동일하다. 단지 속성은 "c:\program files\oci"로 설치경로와 동일하게 진행하면 된다.

"F6"를 눌러서 솔루션을 빌드하자.
빌드한후 "탐색기"나 "내컴퓨터"로 보면 다음과 같이 얌전히 msi파일이 만들어져 있다.
사용자 삽입 이미지

2. 만들어진 파일을 필수구성요소 중 하나로 설정하자.
만들어진 msi파일을 clickonce의 필수 구성요소로 지정하려면 이녀석이 필수 구소요소에 해당하는 것이지 알아야 Visual Studio에서 이러한 것들이 있어요~ 라고 나열해 줄수 있을 것이다.
다시말해 어떤 저장소가 있고 그 저장소에 있는 파일들을 나열해주지 않았을까?
함 찾아 보자.
Visual Studio 2008을 설치했다면 "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages"로 이동해보자.
(그 이전버전의 경우는 "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0" 밑에 Bootstrapper에 Packages에 있었나?? 암튼 그랬으니 찾아보자.)

그런데 여기다 놓는 것으로만 끝나는 것이 아니라 이녀석이 설치될 환경을 지정해줘야 할것 아닌가? 여기서 문제가 발생하는데 이 환경설정이라는 것이 매우 아주 짜증나게 복잡하고 어렵다.
Visual Studio에서도 지원하지 않는 기능이다보니 짜증난다. 이럴때는 3rd Part 프로그램을 찾아보는 것이 현명하고 또 마침 좋은 녀석이 있다.
"Bootstrapper Manifest Generator"라는 녀석이고 공식홈에서 쉽게 다운로드 할 수 있으니 본 블로그의 계정용량을 생각하여 첨부는 생략한다. 공식홈은 여기로 : http://www.codeplex.com/bmg

VS2005용 : http://www.codeplex.com/bmg/release/pr ··· d%3D2215
VS2008용 : http://www.codeplex.com/bmg/release/pr ··· %3D10652

다운로드후 설치하고 "C:\Program Files\Microsoft\Bootstrapper Manifest Generator for VS2008"에 "BMG.EXE"라는 놈을 실행하면 된다. (덴장. 바로가기 버튼이라도 만들어 줄것이지..)

실행하면 다음과 같이 열리는데 Project Name과 Product Code만 "OCI"로 입력하였다.
사용자 삽입 이미지
Package를 우클릭한후에 "Add Install File"을 선택하자
사용자 삽입 이미지
파일을 설정한후 다음과 같이 설치파일에 대한 정보를 설정하였다.
- Display Name : Oracle Client
- Language : 한국어
- Properties 에 Reboot을 None으로 설정하였고 Installation Time을 "30"으로 잡아 줬다.
사용자 삽입 이미지
"System Checks"탭으로 이동하여 왼쪽 상단의 File Check를 추가하고 다음과 같이 지정한다.
Property for Result - Installed
File Name to Search - 찾기로 설치 될 파일중 하나를 지정
Start Searche in Special Folder 체크 해제
Path - 설치될 경로
사용자 삽입 이미지
Install Conditions로 이동해서 다음과 같이 ByPassIf로 설치안하고 통과할 조건을 설정하자.
사용자 삽입 이미지
이제 마지막 설정단계이다. Use Default System Exit Codes 부분을 체크해제하자.
사용자 삽입 이미지
모든 설정이 완료 되었으면 Build한다.
사용자 삽입 이미지
빌드 화면인데 Error나 Warning 없이 완료되었다는 메시지가 뜬다.
사용자 삽입 이미지
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages"밑에 "OCI"라는 폴더가 만들어져 있고 그 안에 보면 product.xml이라는 이름으로 설치파일에 대한 기본정보가 생성되었다.
- product.xml
<?xml version="1.0" encoding="utf-8"?>
<Product ProductCode="OCI" xmlns="http://schemas.microsoft.com/developer ··· strapper">
  <RelatedProducts>
    <DependsOnProduct Code="Microsoft.Windows.Installer.3.1" />
  </RelatedProducts>
</Product>

그리고 "ko"라는 한국어 설치본이 저장되는 폴더가 생성되어 있고 거기를 또 들어가면 "package.xml"과 "oci.msi"파일이 생성되어 있다.
-package.xml
<?xml version="1.0" encoding="utf-8"?>
<Package Name="DisplayName" Culture="Culture" xmlns="http://schemas.microsoft.com/developer ··· strapper">
  <PackageFiles CopyAllPackageFiles="false">
    <PackageFile Name="oci.msi" Hash="CCA799724D75045AC38679C86C93AE2F890E37A7" />
  </PackageFiles>
  <InstallChecks>
    <FileCheck Property="installed" SearchPath="c:\program files\oci" FileName="oraociei10.dll" />
  </InstallChecks>
  <Commands Reboot="None">
    <Command PackageFile="oci.msi" EstimatedInstallSeconds="30">
      <InstallConditions>
        <BypassIf Property="installed" Compare="ValueGreaterThanOrEqualTo" Value="0" />
      </InstallConditions>
    </Command>
  </Commands>
  <Strings>
    <String Name="Culture">ko</String>
    <String Name="DisplayName">Oracle Client</String>
  </Strings>
</Package>

* 아직 베타판인 VS 2008용 Bootstrapper 생성프로그램의 경우 저장을 해도 제대로 불러 오지 못하는 심각한 버그가 있으나 생성까지는 잘되니 눈감고 써주자.

3. Clickonce에 필수파일로 지정하자.
만드는 것까지 완료했다면 실재 사용해봐야 할것아닌가?
Clickonce로 배포할 프로그램이 있다면 프로젝트 속성창에 게시탭을 클릭하여 "필수구성요소"를 선택하자.
사용자 삽입 이미지
이제 가슴 떨리는 순간 두근거림과 함께 우리가 생성한 Oracle Client가 보이면 되는것이다.
다행히 Oracle Client가 포함되어 있다. 배포할때 응용프로그램과 같이 배포하면 될것이니 "내 응용 프로그램과 동일한 위치 ~ 다운로드"를 선택하고 확인을 누른다.
사용자 삽입 이미지
만약 보이지 않는다면 저장소 정보 갱신이 늦어졌을터이니
뻐그 많은 "Bootstrapper Manifest Generator"를 띄워서 "Generate Package Installer"를 실행하여 업데이트를 해주자.
사용자 삽입 이미지

휴~ 이제 완료 된것 같다. 써놓고 보니 가히 사용자 지정 필수 구성요소 추가하기 집대성인듯 싶다.
국내최초의 Visual Studio 2008 대상의 사용자 정의 필수 구성요소 추가하기에 대한 글을 읽어주신 여러 블로거들에게 감사를 보낸다.
2008/04/04 10:57 2008/04/04 10:57