tolelom 66dc8a14de feat: 런처 자동 업데이트 + 보안 수정
자동 업데이트:
- ensureLauncher(): SHA256 비교 → 다운로드 → 해시 검증 → rename-dance 교체
- 첫 실행 시 확인 대화 제거 → 자동 설치
- handleURI() 진입 시 프로토콜 등록 자동 갱신
- .old/.new 잔여 파일 자동 정리

보안:
- DLL Hijacking 방어 (SetDefaultDllDirectories)
- ZIP 경로 탈출 강화 (절대경로/NTFS ADS 거부)
- UTF16 에러 처리 (msgBox, setProgress)
- out.Close() 에러 체크

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 10:37:57 +09:00
2026-02-24 20:52:16 +09:00
2026-02-24 20:52:16 +09:00
2026-02-24 20:52:16 +09:00
2026-02-25 00:20:43 +09:00

One of the plans — Launcher

Windows 전용 게임 런처. a301:// 커스텀 URI 프로토콜을 등록하고, 웹에서 게임 시작 버튼 클릭 시 게임을 자동 다운로드/업데이트/실행합니다.

빌드

# Go 1.24+ 필요
go build -ldflags="-H windowsgui -s -w" -o launcher.exe .

-H windowsgui — 콘솔 창 없이 실행 (Win32 GUI 앱) -s -w — 디버그 심볼 제거 (바이너리 크기 축소)

사용법

실행 방법 동작
launcher.exe (인자 없음) a301:// 프로토콜 등록 확인 다이얼로그
launcher.exe install 프로토콜 강제 등록
launcher.exe uninstall 프로토콜 제거
launcher.exe "a301://launch?token=<JWT>" 게임 실행 (웹에서 자동 호출)

게임 실행 흐름

웹 "게임 시작" 클릭
  └─ a301://launch?token=JWT
       └─ launcher.exe 실행
            ├─ 서버에서 최신 버전 정보 조회 (fileHash, url)
            ├─ A301.exe 없음 또는 해시 불일치 → 다운로드 창 표시
            │    ├─ game.zip 다운로드 (진행률 표시)
            │    └─ 압축 해제 (launcher.exe 자신은 덮어쓰기 방지)
            └─ A301.exe -token <JWT> 실행

UI

다크 테마 Win32 창 (배경 #2E2C2F, 강조색 #BACDB0). 4K / FHD 해상도 모두 자연스럽게 표시 (DPI 인식 + 동적 스케일링).

배포 구조

유저가 받는 구성:

(게임 폴더)/
├── launcher.exe   ← 이 파일
└── A301.exe       ← 런처가 자동 다운로드

launcher.exe를 처음 실행하면 레지스트리에 a301:// 프로토콜을 등록하고, 이후 웹에서 게임 시작 버튼을 누를 때마다 자동으로 이 런처가 실행됩니다.

레지스트리 등록 경로

HKCU\Software\Classes\a301\
HKCU\Software\Classes\a301\shell\open\command  →  "launcher.exe" "%1"

의존성

  • golang.org/x/sys/windows — Win32 API
  • golang.org/x/sys/windows/registry — 레지스트리 접근
Description
No description provided
Readme 305 KiB
2026-02-24 13:28:07 +00:00
Languages
Go 100%