🔄 디버 업데이터 (DberUpdater)
바탕화면의 드럼통 아이콘이 바로 디버 업데이터입니다. 프로그램의 자동 업데이트 시스템 구조와 ChromeDriver 관리 방식을 상세히 설명합니다.
디버 업데이터란?
디버 업데이터(DberUpdater)는 온리원디버의 자동 업데이트 관리 프로그램입니다. 버전 1.0.1.0, 온리원연구소에서 개발했으며 .NET Framework 4.5 기반의 Windows Forms 애플리케이션입니다.
📋
update.xml 체크
서버에서 최신 파일 목록을 받아와 로컬 파일과 비교
🔐
MD5 무결성 검증
각 파일의 MD5 해시를 비교하여 변조·손상 여부 확인
⬇️
순차적 다운로드
변경된 파일만 순차적으로 다운로드하여 효율적 업데이트
🌐
ChromeDriver 관리
PC의 Chrome 버전에 맞는 ChromeDriver 자동 다운로드
시스템 구조
| 구성 요소 | 파일 | 역할 |
|---|---|---|
| 메인 진입점 | Sequential_File_Downloader/Program.cs | 애플리케이션 시작. FormDownloader 폼 실행 |
| 업데이터 폼 | DberUpdater/FormDownloader.cs | 전체 업데이트 로직 (618줄, 19개 메서드) |
| 작업표시줄 | DberUpdater/TaskbarProgress.cs | Windows 작업 표시줄 진행률 표시 (Win7+) |
| 리소스 | DberUpdater.Properties/Resources.cs | 아이콘·이미지 등 리소스 관리 |
| 설정 | DberUpdater.Properties/Settings.cs | 사용자 설정 관리 |
| 어셈블리 정보 | Properties/AssemblyInfo.cs | 프로그램 메타데이터 (버전·회사·저작권) |
업데이트 프로세스 (5단계)
1
update.xml 다운로드
서버 URL
https://www.kiam.kr/downloads/update.xml에서 최신 파일 목록 XML을 다운로드2
파일별 비교 (GetUpdateInfo)
파일 존재 여부 확인 → 있으면 MD5 해시 비교 / 없으면 다운로드 목록에 추가
ChromeDriver는 특별 처리: 버전 비교 후 필요 시 업데이트
ChromeDriver는 특별 처리: 버전 비교 후 필요 시 업데이트
3
기존 프로세스 종료 (KillMainProcesses)
실행 중인 온리원.exe 프로세스를 강제 종료하여 파일 잠금 해제
4
순차적 파일 다운로드
다운로드 목록의 파일을 순서대로 다운로드. 개별 파일 진행률 + 전체 진행률 동시 표시
5
업데이트 완료 → 온리원.exe 실행
모든 파일 다운로드 완료 후 메인 디버 프로그램(온리원.exe) 자동 실행
update.xml 파일 구조
서버의 https://www.kiam.kr/downloads/update.xml 파일이 배포 파일 목록을 관리합니다.
<root>
<file path="파일경로" hash="MD5해시값" />
<file path="chromedriver.exe" hash="abc123..." />
...
</root>
<file path="파일경로" hash="MD5해시값" />
<file path="chromedriver.exe" hash="abc123..." />
...
</root>
| 속성 | 설명 | 예시 |
|---|---|---|
| path | 파일의 상대 경로 | chromedriver.exe, data/config.xml |
| hash | 파일의 MD5 해시값 (소문자 16진수 32자리) | d41d8cd98f00b204e9800998ecf8427e |
MD5 해시 검증 방식
다운로드된 파일의 무결성을 MD5 해시로 검증합니다.
CalculateMD5(filename):
1. MD5.Create()로 해시 객체 생성
2. 파일을 FileStream으로 열기
3. ComputeHash()로 해시 계산
4. BitConverter로 16진수 문자열 변환 (대시 제거, 소문자)
1. MD5.Create()로 해시 객체 생성
2. 파일을 FileStream으로 열기
3. ComputeHash()로 해시 계산
4. BitConverter로 16진수 문자열 변환 (대시 제거, 소문자)
파일이 이미 존재하면 로컬 파일의 MD5를 계산하여 update.xml의 hash 값과 비교:
- 일치 → 파일 건너뜀 (이미 최신)
- 불일치 → 다운로드 목록에 추가 (업데이트 필요)
ChromeDriver 자동 관리
디버 업데이터의 가장 중요한 기능 중 하나는 ChromeDriver 자동 업데이트입니다. PC에 설치된 Chrome 브라우저 버전과 호환되는 ChromeDriver를 자동으로 찾아 다운로드합니다.
Chrome 버전 확인 (GetChromeVersion)
Windows 레지스트리에서 Chrome 설치 경로를 읽어 버전 정보를 가져옵니다.
레지스트리 경로:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe
현재 ChromeDriver 버전 확인 (GetCurrentChromeDriverVersion)
기존 chromedriver.exe를 --version 인자로 실행하여 현재 설치된 버전을 확인합니다.
ChromeDriver 다운로드 URL 획득 (GetChromeDriverLink)
Chrome 버전에 따라 두 가지 API를 사용합니다:
| Chrome 버전 | 사용 API | 방식 |
|---|---|---|
| Chrome 115 이상 | Google Chrome for Testing API | JSON 응답에서 정규식으로 다운로드 URL 추출 |
| Chrome 114 이하 | Chromedriver Storage API (레거시) | LATEST_RELEASE_버전 경로로 직접 다운로드 |
Chrome 115+ API 상세
API URL:
정규식 패턴:
버전을 상위에서 하위로 줄여가며 매칭 시도 (예: 120.0.6099.109 → 120.0.6099 → 120.0 → 120)
https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json정규식 패턴:
https://storage.googleapis.com/chrome-for-testing-public/{version}/win32/chromedriver-win32.zip버전을 상위에서 하위로 줄여가며 매칭 시도 (예: 120.0.6099.109 → 120.0.6099 → 120.0 → 120)
ChromeDriver 설치 절차
- 기존 ChromeDriver 프로세스 강제 종료 (KillAllChromeDriverProcesses)
- ZIP 파일 다운로드 → 압축 해제 → chromedriver-win32 폴더의 파일들을 실행 경로로 복사
- 임시 폴더 정리 및 ZIP 파일 삭제
UI 및 진행률 표시
| UI 요소 | 기능 |
|---|---|
| ProgressBarDownloading | 현재 다운로드 중인 파일의 진행률 (0~100%) |
| ProgressBarSequence | 전체 파일 중 완료된 비율 (예: 3/10 → 30%) |
| LabelDownloadingUrl | 현재 다운로드 중인 파일명 표시 |
| LabelProgress | "완료건수 / 전체건수" 형식 텍스트 |
| LabelStatus | 상태 메시지 ("업데이트 정보를 불러오고 있습니다..." → "업데이트 진행중..." → "업데이트 완료 N") |
| TaskbarProgress | Windows 작업 표시줄에 진행률 녹색 바 표시 (Win7+ 호환) |
실행 시 유의사항
📌 관리자 권한 필요: 디버 업데이터는
requestedExecutionLevel: requireAdministrator로 설정되어 있습니다. 실행 시 관리자 권한 요청이 나타나면 반드시 [예]를 선택하세요.
📌 SSL 인증서 검증: Chrome 115+ API 호출 시 모든 SSL 인증서를 신뢰하도록 설정되어 있습니다 (
ServerCertificateValidationCallback = (...) => true). 이는 다양한 네트워크 환경에서의 호환성을 위한 설정입니다.