강좌,팁

[팁:14] 프로그램 제거 단축아이콘 넣기(1차수정)

조회 수 15297 추천 수 0 2006.04.26 15:10:02
허창원 *.19.45.160

"초보맨" 님의 uninstall 질문에 대해 알아보다가 방법이 간단해서, 
그리고, 한동안 강좌 게시판에 아무것도 못올린 관계로 급히 만들어봅니다.

----------------------------------------------------------------------------------------------

[팁:14] 프로그램 제거 아이콘 넣기

기준툴: LabWindows/CVI 7.1

차례
1. Uninstall 단축아이콘 샘플 구하기
2. CVI 프로젝트에서 ProductCode 알아보기
3. 복사해온 Uninstall 단축아이콘을 수정하기
4. Uninstall 단축아이콘을 배포판 제작시에 포함시킴
5. Uninstall 단축아이콘으로 프로그램 제거하기

서론 생략하고 바로 설명 들어갑니다.
보통 프로그램이 설치된 프로그램 그룹을 보면, 해당 프로그램을 제거하는 아이콘도 함께 보입니다. 제가 질문을 받고 둘러본 결과, 프로그램 제거를 위한 기능이 프로그램마다 조금씩 다르더군요.

1. Uninstall 단축아이콘 샘플 구하기
자체 uninstall 프로그램을 실행하는 경우도 있고, installshield 로 설치한 프로그램은 역시 그것으로 제거하는 단축아이콘이 들어 있더군요. 그리고 개중에는 Windows Installer를 이용하는 것도 있던데, CVI 로 개발하여 만든 배포판은 이 Windows Installer를 이용하므로 이런 단축아이콘을 찾아서 가져와야겠습니다. 그림 1에는 이와같은 uninstall 단축아이콘을 보였습니다. 낯익은 아이콘 그림이지요?

그림 1. Windows Installer로 된 uninstall 단축아이콘의 예

이 단축아이콘의 속성을 보면, 그림 2와 같습니다.

그림 2. uninstall 단축아이콘의 속성 예

잘 보시면, msiexec.exe의 옵션으로 "/i{B3D......"로 나가는 부분이 보이시죠? 이 부분의 설명은 Windows의 명령프롬프트나 실행 메뉴에서 msiexec.exe /?를 입력해보시면, 설명이 나옵니다.
간단하게는 "msiexec.exe /i"로 지정을 해주면 제거하는 단축아이콘이 되겠습니다. (원래 /i 옵션은 설치하는 옵션이지만, 해당 프로그램이 이미 설치되어 있다면, 제거하는 과정이 진행됩니다.)

2. CVI 프로젝트에서 ProductCode 알아보기
그림 3은 SkyClock라는 이름의 프로젝트에서 배포판(설치프로그램)을 만드는 메뉴를 보였습니다.

그림 3. 배포판 만들기 메뉴

이어서 그림 4에서는 "Advanced" 옵션의 Installer GUID 설정 난을 보였습니다. 이것은 일반적으로 프로그램마다 독특한 코드를 부여하는데요, 이 코드를 복사해서 Uninstall 단축아이콘의 ProductCode 부분에 복사해 넣습니다.

그림 4. 임의의 프로그램 SkyClock의 GUID 보기

3. 복사해온 Uninstall 단축아이콘을 수정하기
다른 프로그램에서 가져온 Windows Installer의 단축아이콘을 수정합니다. 그림 5에서는 "SkyClock 제거"라는 이름으로 파일명을 변경하였습니다.

그림 5. Uninstall 단축아이콘의 이름 수정

그리고, 그림 6에서는 속성에서 msiexec.exe의 경로와 설치옵션, SkyClock의 GUID를 입력한 화면입니다.

그림 6. SkyClock의 GUID를 Uninstall 단축아이콘 속성에 입력한 화면

4. Uninstall 단축아이콘을 배포판 제작시에 포함시킴
이렇게 만든 Uninstall 단축아이콘은 그림 7과 같이 "Creae Distribution Kit" 옵션의 "Advanced" 설정에서 차례대로 진행하여 추가합니다.

그림 7. Uninstall 단축아이콘의 배포판 제작시 추가

그리고, Build를 하면, 설치되었을 때, Uninstall 단축아이콘이 포함된 설치파일이 만들어집니다.
그림 8에는 이렇게 만들어진 설치 파일들을 보였습니다.

그림 8. 배포판(설치 프로그램) 생성된 화면

setup.exe를 설치하면, 그림 9와 같은 프로그램 그룹이 만들어지고, 프로그램 제거를 위한 아이콘도 볼 수 있습니다.

그림 9. 설치된 프로그램에 uninstall 단축아이콘이 포함된 화면

5. Uninstall 단축아이콘으로 프로그램 제거하기
프로그램이 설치된 상태에서 그림 8의 설치 프로그램을 다시 한번 더 실행하면, uninstall 과정이 진행됩니다.
이제는 그런 방법이 아니라도 그림 9의 "SkyClock 제거"라는 단축아이콘을 통해서 제거할 수 있게 되었습니다. 그림 10에는 제거과정을 보였습니다.

그림 10. 제거과정

 

마지막으로 간단히 정리하면,
Windows Installer 프로그램에 대한 단축아이콘의 속성에 제거 옵션을 프로그램의 ProductCode(즉, GUID)와 함께 넣어주고,
그것을 배포판 파일(설치파일) 제작시에 포함시키면 되는 것이었습니다.

"초보맨" 님의 질문이 있었기에 방법을 찾아나서게 되었고, 간단한 방법으로 Uninstall 단축아이콘을 만들어보았습니다. 저도 좋은 팁을 알게된 계기가 되었습니다. 감사합니다.

모두가 행복하세요....

2006년 4월 26일
2006년 4월 27일 수정
극동테크(www.kdtechno.com) 허창원


초보맨

2006.04.26 16:18:26
*.160.232.61

우와.~~
정말정말 감사드립니다..꾸벅(__)

우준혁

2010.03.18 16:21:02
*.247.149.126

흠 8.5에서는 GUID가 없는데 어떻게 해야하나요~??ㅎ

송성희

2012.01.17 11:59:42
*.135.194.120

저도 찾는중인데 보이지가 않네요.. 8.5에서는...ㅡ.ㅡ;

허창원

2012.01.17 21:29:11
*.22.131.199

설치프로그램 만드는 과정이 CVI 8.x 버전부터 달라진 걸로 기억합니다.

이 팁은 새 버전에서 다시 만들어져야 되겠네요...

List of Articles
번호 제목 글쓴이 날짜 조회 수
96 [강좌:37] 테이블 셀로 파일을 드래그앤드롭하기 file [1] 허창원 2007-09-01 29829
95 [강좌:36] 테이블 셀에서 체크박스 기능 이용하기 file 허창원 2007-09-01 21092
94 [팁:17] 사용가능한 Com Port 찾기 file 허창원 2007-08-18 30816
93 [강좌:35] 엑셀(Excel) 파일에 출력하기(양식 유지한채로) [6] 허창원 2007-04-08 52099
92 [팁:16] 엑셀파일(xls)로 저장하기 [4] 허창원 2007-03-29 34519
91 [에러 최소화 습관 팁] 아직 나타내지 않은 Panel의 Control 값을 Set할 때 [1] 허창원 2006-11-25 26761
90 [팁:15] 엑셀에서 지원하는 파일(csv) 생성하기 [1] 허창원 2006-11-23 28922
89 [강좌:34] CVI의 최소화 기능 개선 [3] 허창원 2006-11-18 24287
88 [요약] [강좌:34] CVI의 최소화 기능 개선 허창원 2006-11-18 25896
87 [강좌:33] 컨트롤 배열 처리하기 [5] 허창원 2006-09-28 37563
86 [강좌:32] 시리얼포트의 콜백함수를 만들어 이용하기 [2] 허창원 2006-08-25 33894
85 [강좌:31] 한글 IME, 위치로~~(강력추천) 허창원 2006-06-30 17792
84 [요약] [강좌:31] 한글 IME, 위치로~~(강력추천) [2] 허창원 2006-06-30 19811
83 [강좌:30] Panel을 마우스로 드래그하기(강좌29 업그레이드 버전) file 허창원 2006-06-29 12896
82 [요약] [강좌:30] Panel을 마우스로 드래그하기(강좌29 업그레이드 버전) 허창원 2006-06-29 15022
81 [강좌:29] 타이틀바 없는 Panel을 마우스로 드래그하기 [2] 허창원 2006-06-03 16932
80 [요약] [강좌:29] 타이틀바 없는 Panel을 마우스로 드래그하기 허창원 2006-06-03 15992
» [팁:14] 프로그램 제거 단축아이콘 넣기(1차수정) [4] 허창원 2006-04-26 15297
78 [메모] 강좌의 종류를 분류해봅니다 [5] 허창원 2006-03-30 21274
77 [팁:13] 디버그 종료시에 뜨는 메시지 A non-debuggable thread... 방지 file [2] 허창원 2005-12-21 26576