Document package formats, release workflows, deployment planning and UI concepts. Closes #1
73 lines
7.9 KiB
Markdown
73 lines
7.9 KiB
Markdown
# 검증 계획과 구현 순서
|
|
|
|
2026-10-19 실행 범위 변경: 현재 출시 게이트는 두 독립 제품의 **MSIX** 생성·서명·설치·업데이트·제거다. 아래 두 형식 통합/EXE/EG-BIM 게이트는 후속으로 이월한다. [현재 설계](12-msix-first-builder.md) 참조.
|
|
|
|
## 후속 두 형식 통합 게이트
|
|
|
|
후속 두 형식 완성 시에는 EXE와 MSIX를 모두 검증한다. 첫 MSIX 출시에는 아래 EXE 검증을 요구하지 않는다. 최소 두 독립 가상 제품에서 두 형식의 생성·서명/검증·신규 설치·실행·업데이트·제거와 데이터 보존을 VM으로 검증한다. MSIX는 Publisher/인증서 불일치, 누락 자산·런타임, OS 조건, 임의 설치 경로·미지원 기능, 업데이트 실패를 추가 시험한다. EXE/MSIX 동시 요청의 부분 실패와 대상별 불변 결과도 검사한다. Store 계정과 EG-BIM·자체 서버 없이 이 게이트를 통과할 수 있어야 한다.
|
|
|
|
제품명·경로·레지스트리·게시자를 서로 다른 값으로 시험해 하드코딩을 탐지한다. EG-BIM 실제 전환·CAD 업무 회귀와 자체 서버 승격은 별도 적용 게이트다. Store 제출 준비 검사와 심사 승인도 분리한다. [상세 계약](11-generic-exe-msix-architecture.md), [BL-46~53](../backlog/README.md) 참조.
|
|
|
|
|
|
## 자동 검증
|
|
|
|
| 계층 | 검증할 핵심 동작 |
|
|
| --- | --- |
|
|
| 도메인 | 공통 출력 대상/capability; EXE의 MSI 버전·GUID·기준 상태; MSIX identity·4부분 버전·배포 대상 조건 |
|
|
| 프로젝트 계약 | JSON Schema와 Rust 역직렬화 일치, 알 수 없는 필드, 마이그레이션, revision 충돌 |
|
|
| 파일 해석 | 포함/제외, 필수 파일 누락, 대소문자 충돌, 경로 탈출/reparse point, 원본 무변경 |
|
|
| 레지스트리 | 타입 범위, 32/64비트, XML/MSI 문자열 escaping, 지원하지 않는 HKCU 정책 차단 |
|
|
| 작업 엔진 | 가짜 WixBackend/MsixBackend/Signer를 통한 단계 실패, 취소, 중복 요청, 체크포인트, 잠금 충돌 |
|
|
| 실제 도구 통합 | 작은 독립 제품들로 MSI/EXE/MSP/MSIX 생성, 실제 식별자와 서명/해시 추출 |
|
|
| 대용량 | 총 2GB 초과와 여러 CAB, 크기 합산 오버플로, 메모리 사용, 개별 제한 초과 실패 |
|
|
| UI/IPC | 계획 이후 설정 변경 차단, 권한 없는 Command, 입력/로그의 HTML 실행 방지 |
|
|
| 설치 과정/UI | 의존 단계 삭제·순환·조건 오류 차단, 대화형/무인 결과 일치, patch/repair Feature 유지, CustomAction 복구, WebView2 없는 PC |
|
|
|
|
CAB 시험에는 압축이 매우 잘 되는 0바이트 반복 데이터만 쓰지 않는다. 실제 압축률에 가까운 fixture를 사용해 산출물 크기와 분할 경계를 검증한다. 개발용 인증서 시험과 공인 서명 서비스 시험을 구분한다. 개발용 인증서 통과를 공인 서명이나 SmartScreen 평판 통과로 표시하지 않는다.
|
|
|
|
## Windows VM 설치 시험
|
|
|
|
실제 설치 시험은 생성기/개발자의 업무 PC가 아닌 스냅샷 복구 가능한 VM에서 수행한다. 각 결과에는 사용한 최종 아티팩트 해시, OS, 계정/권한, 기준 상태, 실행 로그와 결과를 연결한다.
|
|
|
|
| 시나리오 | 합격 조건 |
|
|
| --- | --- |
|
|
| EXE 신규 설치 | 기본/사용자 지정 경로, 파일·레지스트리·런타임·실행 정상 |
|
|
| MSIX 신규 설치/업데이트 | OS 관리 경로·앱 실행·의존성·서명 신뢰 확인, 버전 증가 업데이트·제거·데이터 보존 |
|
|
| 기존 InstallShield 전환 | 실제 배포본별 탐지, 설정·CUI·도면 보존, 기존 삭제 스크립트 영향 확인 |
|
|
| 오프라인 전체 설치 | 네트워크 차단 상태에서 CAB와 런타임을 모두 로컬로 해석 |
|
|
| 네트워크 설치 | 단절·재시도·캐시·해시 불일치 처리, 불완전 다운로드 미적용 |
|
|
| 패치 | 선언한 기준 상태 각각에서 목표 신규 설치와 공급자 관리 상태 일치 |
|
|
| 패치 불가/전체 대체 | 잘못된 ProductCode·언어·패치 이력 차단, 검증된 전체 업그레이드 실행 |
|
|
| 파일 버전/수정 | 동일 PE 버전의 변경 파일, 수정된 비버전 파일, 누락 파일의 결과 검증 |
|
|
| 실패/재부팅 | 앱 실행 중, 파일 잠김, 디스크 부족, 3010/1641, rollback와 복구 판정 |
|
|
| 설치 후 유지보수 | Burn 표시와 MSI 상태, repair, uninstall, 다음 패치·전체 업그레이드 |
|
|
| Store EXE 출력 | 단일 파일, 무다운로드, silent 경로, 서명, 버전별 고정 URL 조건 |
|
|
| Store MSIX 출력 | 제출 identity/버전/manifest·자산·지원 선언 검증. 제출 파일과 직접 설치용 서명본 구분; 실제 심사는 별도 |
|
|
|
|
사용자 데이터 보존은 해시가 반드시 동일해야 하는 공급자 파일과 별도 판정한다. 저장된 백업이 있다는 것만으로 복구 성공이라고 하지 않고 실제 복원과 앱 재실행까지 확인한다.
|
|
|
|
## 구현 순서
|
|
|
|
아래 표는 영역별 구현 설명이다. 실제 작업 배치는 [통합 백로그](../backlog/README.md)와 [단독 개발 일정](../plan/10-development-schedule.md)을 따른다. 기존 제거 및 Rust/Burn 연결 실험은 초기에 수행하고, 실제 EG-BIM 전환 구현은 GUI 완성보다 앞에 배치한다.
|
|
|
|
| 단계 | 구현 내용 | 완료 기준 |
|
|
| --- | --- | --- |
|
|
| 1. 기준 확정 | 두 가상 제품, EXE/MSIX 도구·범위·서명, EG-BIM 자료는 별도 조사 | 범용 빌드 계약과 적용 전환 위험을 각각 기록 |
|
|
| 2. Rust 엔진/CLI | 스키마, 파일 해석, identity lock, 검증/계획 | fixture에서 안정적인 목록·GUID와 설명 가능한 오류 |
|
|
| 3. 전체 릴리스 | WXS 생성, MSI/Burn, 분할 CAB, 서명 어댑터 | 작은 제품과 2GB 초과 제품의 전체 설치 시험 통과 |
|
|
| 4. 버전별 패치 | 기준 저장소, diff, 호환성, MSP, 순서/이력 | 최소 두 기준 상태에서 동일 목표 도달·repair·제거 통과 |
|
|
| 5. Tauri UI | 프로젝트/파일/레지스트리/릴리스/패치/작업 화면 | CLI와 같은 계획·결과, 긴 작업 중 UI 응답 유지 |
|
|
| 필수 MSIX. 패키지 출력 | manifest·SDK·서명·업데이트·제작 화면 | 독립 제품 두 개의 두 형식 시험과 부분 실패 검사 통과 |
|
|
| 6. EG-BIM 전환 | 실제 파일/레지스트리/백업, 기존 업데이터 연계 | 실제 IS 출시본→WiX→후속 MSP 경로 시험 통과 |
|
|
| 7. 배포 연결 | 내보내기, 외부 증빙, 업로드 계약, Store 가능성 | 불변 파일과 기준 정보가 배포 시스템에 연결 |
|
|
|
|
EXE/MSI 버전별 MSP와 MSIX 버전별 업데이트는 필수 범위이며 최초 제품 완성에서 제외하지 않는다. 다만 작은 시험 제품으로 엔진을 검증한 뒤 실제 EG-BIM 데이터를 적용한다. UI 작업은 엔진 계약이 안정화된 후 순차 수행한다. 단독 개발자의 병렬 작업 용량을 가정하지 않는다.
|
|
|
|
설치 과정/화면 편집 요구는 [09 설계](09-install-flow-and-ui.md)를 따른다. 단계 2~3에 과정 검증과 기본 테마 출력을, 단계 5에 과정/UI 편집기를 추가한다. 자유로운 페이지/분기 지원은 Rust/Burn 연결 실험 후 사용자 정의 BA로 구현하며 기본 테마 편집만으로 해당 요구를 완료 처리하지 않는다.
|
|
|
|
## 정식 배포를 막는 미확정 사항
|
|
|
|
각 제품의 실제 소스·표시명·런타임·서명과 선택 형식의 identity를 확정해야 해당 제품의 정식 배포 준비를 판정할 수 있다. EXE는 Burn/MSP 유지보수, MSIX는 manifest·서명·업데이트 증빙을 요구한다. EG-BIM의 기존 설치본·파괴적 제거·NuGet 계약 미확정은 EG-BIM 전환을 차단하며 다른 제품의 빌드를 막지 않는다. 초안 예제만으로 정식 릴리스 준비를 선언하지 않는다.
|
|
|
|
이 문서 작성 단계에서는 설계 문서의 경로·예제 JSON·문서 간 일관성만 검사한다. Rust 컴파일, WiX/MakeAppx 빌드, 실제 서명, 설치·패치·Store 심사는 수행하지 않았다.
|