본문 바로가기
프로젝트

캡스톤 디자인 (1)

by G0Yang 2019. 3. 21.

해군 23개월의 목무를 마치고 오니 복학 시즌이 엉켜버렸다.


2학년 1학기를 하지 못한 상태로 2학년 2학기를 시작해버렸다.


덕분에 3학년 때부터 캡스톤 디자인을 들을 수 있었다.


항상 나는 졸업작품에 대해 안해본 것을 해보리라 하는 꿈이 있었다.


이번 프로잭트는 .NET을 이용하여 윈도우 프로그램 개발을 하는 것이다.


컴퓨터를 사용하면서 쾌적한 상황을 좋아하는 성격때문에 매 학기마다 포멧을 하고 방학때도 수없이 포멧을 하곤 했다.


그럴 때마다 불편한 부분이 프로그램들을 재설치하는 부분이였다.


물론 고스트를 이용해서 이미지를 만들면 쉽게 복원이 가능하지만 얼마 지나지 않아 최신버젼이 올라오면 무용지물이 되기 때문에 별로 선호하지 않는다.


그래서 생각한 것이 프로그램 리스트를 작성하면 최신 설치파일을 다운받고 이를 한꺼번에 설치해주는 프로그램을 만들어야겠다고 생각했다.


첫번째로는 설치파일 리스트를 불러오는 것부터 시작해서 반복문을 돌려 하나씩 실행시켜주는 것 까지는 쉽게 끝났다.


.NET은 학교 교육과정에서 없어서 새로 독학하면서 진행했지만 생각보다 빨리 끝나서 프로그램 제거까지 기능을 추가하기로 했다.




과거 안드로이드 앱을 개발해본 경험이 있었는데 그것과 비슷한 부분이 많아서 한층 쉽게 진행된거라 생각한다.


메뉴를 만들고 리스트박스에 프로그램 리스트를 선택할 수 있도록 만들었다.


설치 과정은 폴더 선택 - exe 파일 불러오기 - 파일 선택 - 반복문 수행 으로 생각보다 간단하다.


삭제 과정은 프로그램이 어떻게 설치되었는가? (메트로 앱, 클래식 앱 등)에 따라서 달라지는 것 같다.


처음에는 윈도우 명령어 중 프로그램 삭제를 수행해주는 명령어가 있어 이를 이용하여 삭제를 해보았다.





제거가 되는 프로그램이 있는 반면, 안되는 프로그램도 있다.


저 ReturnValue가 1603이면 제거 실패, 0이면 성공이다.


이를 해결하기 위해 레지스트리를 이용한 삭제 방법을 찾아냈다.




DIsplayName가 프로그램 이름이 되고 UninstallString을 이용해 프로그램을 제거하는 경로를 가져올 수 있다.




모든 레지스트리가 DisplayName과 UninstallString을 가지고 있는 것이 아니라 이를 추려내는 것이 힘들었다.


결국은 프로그램 안에 정상적으로 출력이 가능하게 되고 2가지 방법(윈도우 명령어, 레지스트리)을 수행하기 위해서

분기 작업 코드를 작성했다.





프로잭트 시작 1달째는 설치만 하고 다음 아이디어를 생각하느라 시간이 금방 흘렀다.


2달 째 진행사항으로는 거의 모든 작업이 수행되고 에러만 조금 손보면 되는 과정이다.


3달 프로잭트로 마감을 지어야 하는 상황에서 프로그램을 마무리하진 못했지만 99%는 완성으로 생각해서 아쉬움은 없었다.







이 프로그램에서 아쉬운걸 꼽으라면 설치를 할 때 설치파일들을 최신목록으로 수동으로 업데이트를 해줘야 한다는 점이다.


기회가 된다면 설치파일까지 최신 목록으로 업데이트하는 프로그램을 만들고 싶다.



댓글