Document package formats, release workflows, deployment planning and UI concepts. Closes #1
172 lines
27 KiB
Markdown
172 lines
27 KiB
Markdown
# 범용 설치 패키지 제작기 구현 백로그
|
|
|
|
작성일: 2026-10-19. [검토 결과](../plan/09-plan-review.md)와 [단독 개발 일정](../plan/10-development-schedule.md)을 함께 사용한다. 백로그는 저장소 문서로만 관리하며 Gitea 이슈는 생성하지 않는다.
|
|
|
|
## 현재 범위 — MSIX 우선, 기준선 v3
|
|
|
|
첫 제품은 **MSIX 생성·서명·직접 배포 업데이트 설정·제작 GUI/CLI**다. EXE/MSI/MSP·HTML 설치 마법사·EG-BIM 전환·자체 그룹 배포 서버·Store 제출은 후속으로 이월한다. [현재 설계](../code-design/12-msix-first-builder.md), [변경 기록](../changes/2026-10-19-msix-first.md) 참조.
|
|
|
|
기존 53개 ID는 유지하며 **1차 18개 / 후속 35개**로 구분한다. 모든 구현 작업은 미착수다. 시안은 구현 완료 증빙이 아니다. 표의 P0/P1은 해당 개발 단계 안의 우선순위이며 후속 P0가 첫 MSIX 출시를 막지 않는다.
|
|
|
|
| 개발 단계 | 백로그 ID | 완료 기준 |
|
|
| --- | --- | --- |
|
|
| 1차 MSIX | BL-02, BL-03, BL-06, BL-09~11, BL-14, BL-16, BL-29, BL-41, BL-46~53 | MS0~MS6. 두 독립 제품의 MSIX 설치/업데이트/제거까지 검증 |
|
|
| 후속 EXE·전환·배포 | BL-01, BL-04~05, BL-07~08, BL-12~13, BL-15, BL-17~28, BL-30~40, BL-42~45 | 후속 일정 미배정. 기존 요구를 보존하되 완료 처리하지 않음 |
|
|
|
|
BL-02/03/06의 WiX·타사 EG-BIM PE·그룹 배포 추가 검증은 후속 관련 작업으로 넘긴다. BL-10의 EXE v1 가져오기는 후속 EXE 단계의 인수 기준이다. BL-50에서 공통 서명·불변 저장을 먼저 구현하고 BL-19/20에서 EXE 전용 순서와 기준 저장소를 확장한다. BL-53은 현재 **MSIX 제품 완료 게이트**이며 두 형식 통합 회귀는 후속 BL-17/28에서 추가한다.
|
|
|
|
## 운영 규칙
|
|
|
|
- **인력/산정 기준:** 개발자 1명, AI 코딩·설계·테스트·문서화 지원 없음. 개발자가 시험과 배포 운영 준비도 수행한다. 외부 승인자·테스터는 추가 개발 인력이 아니다.
|
|
- **우선순위:** P0는 선행 위험 해소·데이터 보존·배포 차단 조건, P1은 해당 단계 완성의 필수 기능, P2는 선택적 확장이다. 1차 P1을 임의로 제외해 첫 제품 완료로 표시하지 않는다.
|
|
- **상태:** 아래 모든 항목은 `미착수`. 이후 `진행 중 → 검증 중 → 완료`로 갱신한다. `차단`은 원인·필요 자료·해제 조건을 함께 기록한다. 시안과 설계 작성은 구현 완료 증빙이 아니다.
|
|
- **선행 조건:** 표의 ID는 완료 후 착수하는 기본 순서다. 인터페이스 검토·자료 수집은 먼저 할 수 있지만 선행 구현의 시험을 통과한 것으로 취급하지 않는다. 외부 전제는 ID 외에도 명시했다.
|
|
- **작업 한도:** 구현 항목은 동시에 1개만 진행한다. 외부 답변 대기 중에는 선행 조건이 충족된 다른 항목을 선택한다. 큰 항목은 착수 전에 1~5일 작업으로 나누되 부모 ID와 완료 기준을 유지한다.
|
|
- **공통 완료 기준:** 변경 코드/문서, 의미 있는 자동 검사, 필요한 Windows VM 실험, 실패 경로, 로그/비밀정보 점검, 사용 절차를 연결한다. 실행하지 않은 검사는 `notRun`으로 남기며 완료를 선언하지 않는다. 시험 기록은 아티팩트 해시·기준 상태·도구/OS·기대/실제 결과를 포함한다.
|
|
- **외부 자료:** 실제 제품 바이너리·고객 설정·서명 키는 공개 Git 저장소에 올리지 않는다. 승인된 별도 저장 위치와 식별자·해시·접근 절차만 연결한다.
|
|
|
|
현재 마일스톤은 `MS0~MS6`다. 이전 `M0~M10/M-MSIX` 일정은 대체했으며 후속 작업의 과거 단계 이름으로 사용하지 않는다. 담당은 별도 표시가 없으면 단독 개발자이며, 계약·제품 승인·테스터 참여는 관련 외부 주체의 협조가 필요하다. 작업별 예상 일수는 M0에서 실측 자료를 확보한 뒤 세분화한다.
|
|
|
|
## A. 기준 확정과 위험 실험 — 기준
|
|
|
|
근거: [현황](../plan/01-requirements-and-current-state.md), [전환](../plan/02-installer-migration.md), [패치](../plan/08-version-patching.md), [설치 UI](../code-design/09-install-flow-and-ui.md).
|
|
|
|
| ID | 우선순위 | 작업 / 산출물 | 선행 조건 | 완료 기준 |
|
|
| --- | --- | --- | --- | --- |
|
|
| BL-01 | P0 | 실제 출시본·payload·런타임 인벤토리 | 실제 배포본/소스 접근 | 지원 후보별 EXE/MSI 해시·GUID·버전·언어·아키텍처·경로와 제거 작업 목록 작성. 실제 배포 파일/사용자 데이터/타사 파일을 구분하고 제조사·런타임 재배포 조건의 확인 여부 기록. |
|
|
| BL-02 | P0 | 도구·지원 환경과 MSIX 위험 실험 | 없음 | Windows SDK MakeAppx/SignTool, Rust/Tauri, 최소 Windows/CPU 조합과 도구 해시 고정. 작은 Win32 앱으로 MSIX 생성·서명·실행·업데이트 재현. WiX/Burn은 요구하지 않음. 지원 범위/학습 공수를 MS0에서 재산정. |
|
|
| BL-03 | P0 | MSIX 서명·게시자·신뢰 정책 | BL-46 | 개발/운영 서명 프로필, Publisher/Subject 일치, 대상 PC 신뢰, 타임스탬프·갱신·비밀 저장 정책 확정. 실제 운영 서명 접근의 차단 조건 기록. EG-BIM·EXE 서명은 후속. |
|
|
| BL-04 | P0 | 지원 기준 상태·전체 대체 정책 | BL-02, BL-46 | 실제 지원할 legacy 목록과 WiX 기준 상태 목록 정의. 신규 설치 상태/패치 도달 상태를 구분하고 보존 기간, Minor/Major 경로, 패치 제거 기본 비활성 정책 문서화. 공통 MSI 기준 상태는 가상 제품으로 확정; EG-BIM legacy 지원 목록은 BL-01 이후 별도 확정. |
|
|
| BL-05 | P0 | 서버·장치·기존 채널 계약 | 없음 | 사내망/인터넷, 저장소/DB/인증 방식과 용량 가정 결정. Center/Family/External의 의미, 장치 그룹 충돌·최초 등록·오프라인 라이선스 경로 결정. |
|
|
| BL-06 | P0 | MSIX 인수 기준·VM 매트릭스 | BL-02, BL-46 | 두 독립 가상 제품과 지원 OS/CPU/권한별 설치·실행·버전 증가·제거·데이터 보존 기준 확정. 불일치 인증서·누락 의존성·디스크 부족·중단·네트워크 실패와 설치 중 사용 상태 포함. Store·EXE·그룹 테스터 요구 없음. |
|
|
| BL-07 | P0 | 기존 제거와 설정 보존 실험 | BL-01, BL-02 | 스냅샷 VM에서 실제 구버전 제거 전후 파일·HKCU/HKLM·CAD 연결 차이를 측정. 다른 계정 UAC·사용자 지정 경로를 포함해 외부 백업의 복원 가능성과 미복구 범위를 기록. |
|
|
| BL-08 | P0 | Rust/Burn BA·UI 부트스트랩 실험 | BL-02 | Detect/Plan/Apply·취소·오류·재부팅 이벤트의 최소 연결을 재현. WebView2 없는 오프라인 VM에서 시작 경로 확인. 미성립 시 native 선행 UI 등 대안과 추가 공수를 결정하고 자유 UI 약속을 보류. |
|
|
|
|
## B. Rust 공통 엔진과 CLI — 공통
|
|
|
|
근거: [구조](../code-design/01-architecture.md), [데이터](../code-design/02-project-model.md), [파일/레지스트리](../code-design/03-files-and-registry.md), [식별자](../code-design/04-version-and-identity.md), [명령](../code-design/07-ui-and-commands.md).
|
|
|
|
| ID | 우선순위 | 작업 / 산출물 | 선행 조건 | 완료 기준 |
|
|
| --- | --- | --- | --- | --- |
|
|
| BL-09 | P1 | Rust workspace·Windows CI·fixture | BL-02 | domain/engine/infra/cli 의존 방향과 잠금 파일 구성. 새 환경에서 format/lint/build/test 실행, 소형 가상 제품 준비. 로컬 설정·작업 폴더·대형 산출물을 형상 관리에서 제외. |
|
|
| BL-10 | P0 | v2 MSIX 프로젝트·저장·검증 | BL-09, BL-46 | Rust/JSON Schema 일치, 미지 필드/버전·revision 충돌·백업 검증. formats.exe 없이 MSIX 프로젝트 열기/저장. EXE/v1/Store 미지원 입력은 설명과 함께 거부하고 자동 변환하지 않음. 확정되지 않은 identity·서명으로 정식 결과 확정 불가. |
|
|
| BL-11 | P0 | 파일 해석과 스냅샷 입력 | BL-10 | 포함/제외·필수 파일·정렬 결과가 결정적. 대소문자 충돌, 경로 탈출/ADS/reparse point, 출력 재수집 차단. 스트림 복사·해시, 복사 중 원본 변경 탐지, 원본 무변경 확인. |
|
|
| BL-12 | P0 | 버전·GUID·identity lock | BL-04, BL-10, BL-11 | 제품/패키지/패치/컴포넌트 식별자의 수명·tombstone·예약 이력 구현. MSI 버전 경계 및 PE 표시 버전 매핑 검사. 같은 리소스의 안정적 GUID와 동시 확정 차단 확인. |
|
|
| BL-13 | P1 | 레지스트리·설치 위치 컴파일 | BL-10, BL-12 | 타입·뷰·literal/formatted 값을 검증하고 WXS에 안전하게 직렬화. 기존 경로 보존, 소유한 값만 제거, 미지원 HKCU 정책 차단. 생성기 PC 레지스트리가 바뀌지 않음을 확인. |
|
|
| BL-14 | P0 | 프로세스·작업·중단 복구 | BL-09, BL-10 | 허용 도구/인자 배열·시간 제한·Job Object·OS 잠금 구현. GUI/CLI 중복 실행 차단, 취소 시 자식 종료, Interrupted 복원, 재개 전 입력/완료 산출물 해시 재검사. |
|
|
| BL-15 | P0 | 설치 단계 카탈로그·검증기 | BL-10, BL-13 | 모드/phase/조건 타입·의존 그래프 검증. 순환·필수 백업 삭제·권한 없는 핸들러·미지원 모드 차단. 화면 숨김과 실행 단계 제거를 구분하고 무인 설치 필수 입력 검사. |
|
|
| BL-16 | P1 | MSIX 공통 계획 서비스와 CLI | BL-11, BL-14, BL-47 | validate/plan/build/job/export 계약·종료 코드·JSON 출력. 오래된 revision/도구/identity 계획과 중복 요청 차단. 실제 빌드·내보내기는 BL-49/50에서 연결. patch/MSI/EXE/Store 요청은 명시 오류. |
|
|
|
|
## C. 전체 설치·서명·구버전 전환 — 후속 EXE와 공통 VM
|
|
|
|
근거: [릴리스](../code-design/05-release-pipeline.md), [전환](../plan/02-installer-migration.md), [서명](../plan/06-code-signing-and-smartscreen.md).
|
|
|
|
| ID | 우선순위 | 작업 / 산출물 | 선행 조건 | 완료 기준 |
|
|
| --- | --- | --- | --- | --- |
|
|
| BL-17 | P0 | WiX MSI/Burn 전체 설치 생성 | BL-02, BL-16, BL-47 | 실제 MSI 테이블/식별자와 기대 계획 일치. 기본·사용자 지정 경로, 필수 런타임, silent·오프라인·재부팅, repair/uninstall의 소형 제품 시험 통과. CLI build 연결. 직접 배포용 offline-singlefile/offline-layout/network 출력과 불변 payload 검증. 후속 완료 시 두 독립 제품의 EXE와 기존 MSIX 비회귀 확인. |
|
|
| BL-18 | P0 | 대용량 CAB·출력 한계 검사 | BL-17 | 실제에 가까운 압축률로 총 2GB 초과 레이아웃 설치/복구 확인. 개별 파일 초기 지원 한계·단일 EXE 크기/서명 불가를 명확히 차단. 임시 공간 포함 계산과 메모리 사용 측정. |
|
|
| BL-19 | P0 | 운영 서명·타임스탬프 어댑터 | BL-03, BL-17, BL-50 | 자체/타사 PE 구분, CAB/MSI/Burn 서명 순서와 최종 해시 검증. 서명·타임스탬프 실패 시 배포 불가, 완료 파일 재서명 방지. 실제 운영 서명과 개발 인증서 결과를 분리. BL-50의 공통 서명 포트를 EXE 순서로 확장. |
|
|
| BL-20 | P0 | EXE 기준 릴리스·증빙 저장 확장 | BL-18, BL-19, BL-50 | 동일 releaseId 덮어쓰기 차단, MSI/wixpdb/서명 payload/정의/도구/로그 보존. Finalized와 설치 시험 증빙 분리, 결과 상태를 실제 파일에서 추출. 증빙 없는 정식 배포 준비 상태 차단. BL-50의 불변 저장 계약을 재사용. |
|
|
| BL-21 | P0 | 사용자별 백업·검증·복원 | BL-14 | 원래 사용자 SID 기준 CUI/설정/추가 리소스 보관 및 호환 설정만 복원. 여러 프로필·다른 관리자 UAC·부분 실패 결과를 호출자에 전달. 임시 다운로드 정리와 백업 수명 분리. 공통 계약은 가상 사용자 데이터로 검증. EG-BIM 실제 보존 정책은 BL-07 검증 후 적용. |
|
|
| BL-22 | P0 | 실제 EG-BIM 전환 실행 | BL-15, BL-20, BL-21 | 전체 payload 확보·백업 검증 전 구버전 제거 차단. 지원 legacy별 기존 경로·타사 CAD 연결·사용자 데이터 보존 및 앱 실행 확인. 실패/전원 중단 시 복구 상태·로그·백업 유지. |
|
|
| BL-41 | P0 | VM 시험 실행·증빙 수집 기반 | BL-02, BL-09 | 업무 PC와 분리된 지원 OS VM/스냅샷·fixture·로그 수집 구성. 첫 패키지부터 실제 아티팩트 해시와 기준 상태로 증빙 저장. 이후 단계마다 신규/패치/실패 시험 매트릭스를 누적 실행. 기반은 MS1에 준비하고 각 게이트에서 재사용. |
|
|
|
|
## D. 패치와 적용 실행 계약 — 후속 EXE
|
|
|
|
근거: [패치 운영](../plan/08-version-patching.md), [패치 생성](../code-design/06-patch-pipeline.md), [검증](../code-design/08-validation-and-roadmap.md).
|
|
|
|
| ID | 우선순위 | 작업 / 산출물 | 선행 조건 | 완료 기준 |
|
|
| --- | --- | --- | --- | --- |
|
|
| BL-23 | P0 | 기존 업데이터 실행 능력 검증 | BL-02 | NuGet 구현/테스트로 MSI/MSP 실행·승격·서명 검증·종료 코드·재부팅·동시 실행 지원을 확인. 재사용 가능/별도 구현 필요 항목과 API 계약 작성. 조사부터 먼저 착수할 수 있으나 완료는 실제 실행 증빙 필요. 공통 실행 어댑터는 가상 제품으로 검증하며 EG-BIM NuGet 적합성은 BL-01 이후 별도 적용 결과로 기록. |
|
|
| BL-24 | P0 | 설치 시도 상태 머신 | BL-21, BL-23 | attemptId·잠금·원래 사용자·3010/1641·재부팅 후 재개·rollback 완료/불명확 상태 구분. 앱 저장/종료 실패 시 적용 차단, 불명확 상태에서 전체 설치 강행 차단. |
|
|
| BL-25 | P0 | baseState 저장·diff·호환성 | BL-04, BL-12, BL-20 | ProductCode/PackageCode·언어·아키텍처·패치 이력·관리 파일로 기준 식별. 신규 설치와 패치 도달 상태 분리. 삭제/이동/런타임 구조 변경을 FullUpgradeRequired로 분류하고 사용자 데이터를 비교 대상에서 제외. |
|
|
| BL-26 | P0 | MSP 생성·서명·불변 보관 | BL-19, BL-25 | 한 기준 상태→한 목표 MSP 생성 및 실제 PatchCode/family/sequence 검증. 목표 PE 재서명 없음. 중복/역행 패치 차단, 크기 비교, 선언된 기준과 최종 해시 보관. |
|
|
| BL-27 | P0 | Burn/MSP 및 전체 대체 경로 | BL-17, BL-24, BL-26 | 패치 후 ARP/Burn/MSI 버전·repair·제거·다음 업데이트 일관성 확인. 같은 ProductCode와 major 전환을 구분하고 source state별 동일 목표 전체 경로 검증. 미검증 경로는 FullUpgradeRouteUnavailable. |
|
|
| BL-28 | P0 | 패치 기준별 동등성·실패 시험 | BL-17, BL-26, BL-27, BL-41 | 최소 두 선언 기준 상태에서 목표 신규 설치와 공급자 관리 상태 비교. 중간 버전 생략·중복·파일 수정/누락·원본 캐시 누락·디스크 부족·중단·재부팅·복구/제거/다음 패치 시험. 선언한 모든 기준의 증빙 통과. 공통 게이트는 가상 제품 기준이며 실제 EG-BIM 전환 기준 시험은 BL-22 이후 BL-42에서 확인. 후속 두 형식 설치/업데이트 회귀를 추가하되 MSIX에 MSP 적용 금지. |
|
|
|
|
## E. Tauri 제작기와 최종 설치 UI — 제작기와 후속 EXE UI
|
|
|
|
근거: [제작기 UI/명령](../code-design/07-ui-and-commands.md), [설치 과정/UI](../code-design/09-install-flow-and-ui.md).
|
|
|
|
2026-10-19 [재설계](../code-design/10-installer-wizard-redesign.md)에 따라 아래 작업을 구체화한다. 시안 작성으로 구현 상태는 변경하지 않는다. [변경 기록](../changes/2026-10-19-installer-ui-redesign.md) 참조.
|
|
|
|
| ID | 우선순위 | 작업 / 산출물 | 선행 조건 | 완료 기준 |
|
|
| --- | --- | --- | --- | --- |
|
|
| BL-29 | P1 | MSIX 제작기 화면·IPC·자체 배포 준비 | BL-16, BL-49 | 앱 정보·파일·패키지·서명·업데이트·검증/빌드 화면과 작업 이력. CLI와 같은 엔진, 작업 재연결, 최소 권한·경로 검증. 제작기 자체 배포 identity는 고객 앱과 분리. 선택한 단일 디자인 구현, WiX/EXE 출력 구현 없이 개발 환경 시작 및 배포/실행 확인. |
|
|
| BL-30 | P1 | 설치 과정 편집기 | BL-15, BL-29 | 단계 추가/활성화/허용 순서/조건/등록 핸들러 속성 편집. 필수 단계 삭제와 의존성 오류를 저장/빌드에서 검사, 모드별 실행 계획 표시. 임의 관리자 셸 입력 기능 없음. |
|
|
| BL-31 | P1 | 기본 테마·문구·리소스 편집 | BL-17, BL-29 | 고정 템플릿·로고·지원 색상/배치·문구/다국어 편집과 모드 미리보기. 실제 native 출력 비교, 미지원 자유 페이지 기능 명시. 변경 시 새 빌드/서명 필요성 반영. |
|
|
| BL-32 | P1 | 사용자 정의 BA·자유 페이지 편집 | BL-08, BL-24, BL-30, BL-31 | 승인된 UI 백엔드로 입력 바인딩·검증·페이지/조건 분기·Feature 선택 구현. Burn 외 중복 설치 실행 없음, 적용 시작 후 계획 고정, 무인 입력 계약과 WebView2 부트스트랩 검증. 기본 테마 기능으로 대체 완료하지 않음. |
|
|
| BL-33 | P1 | UI 실물 검증과 접근성 | BL-29~32, BL-41 | DPI·키보드·스크린 리더·다국어 및 오류/취소/실패/재부팅 화면 확인. 미리보기와 서명 번들 차이를 기록. patch/repair의 Feature 유지 및 대화형/무인 설치 결과 동등성 통과. |
|
|
|
|
### 재설계에 따른 추가 인수 기준
|
|
|
|
| 작업 | 기존 완료 기준에 추가할 검사 |
|
|
| --- | --- |
|
|
| BL-15 | welcome/license/options/review/prepare/apply/result 페이지와 실행 그래프를 분리. 업데이트의 약관 버전 조건, 필수 준비 및 무인 동의/입력 계약 검사. |
|
|
| BL-24 | 적용 전 취소, 적용 중 취소 요청, 엔진이 확인한 rollback 결과, 상태 불명확, 재부팅 필요를 구분하고 UI에 전달. |
|
|
| BL-30 | 모드별 단계 목록·조건/복구 속성과 잠금 규칙 편집. 화면 숨김이 백업/무결성 제거로 이어지지 않음. |
|
|
| BL-31 | 진행 안내형/표준 마법사형의 지원 범위 검증. 페이지 목록·미리보기·속성 패널, 로고/문구/지원 스타일 편집. 미지원 native 매핑을 명시. |
|
|
| BL-32 | 신규/전환/패치/복구/제거 페이지 분기와 이전 이동 시 입력 유지. review에서 계획 고정, apply의 이전 이동 차단, 제거 확인·약관 동의 차단. 검토용 상황 선택기는 배포 화면에서 제외. |
|
|
| BL-33 | 두 외형에서 정상·백업 실패·실행 앱·적용 실패·취소·재부팅을 검증. 백업 전 제거 불가, 상태 불명확 시 무조건 재설치 불가, 재부팅 필요 시 앱 실행 숨김, 종료/재부팅 기본값 확인. |
|
|
|
|
## F. 서버·업데이터·단계 배포 — 후속 서버
|
|
|
|
근거: [패키지/업로드](../plan/03-package-and-upload.md), [단계 배포](../plan/04-staged-rollout.md), [패치](../plan/08-version-patching.md).
|
|
|
|
| ID | 우선순위 | 작업 / 산출물 | 선행 조건 | 완료 기준 |
|
|
| --- | --- | --- | --- | --- |
|
|
| BL-34 | P0 | 내보내기·서버 수신·신뢰 계약 | BL-05, BL-20, BL-25, BL-50 | artifacts/dependsOn·적용 경로·증빙 스키마를 고정하고 모든 CAB/런타임 의존 관계 포함. Finalized/DeploymentReady와 Uploaded/Verified/Ready의 의미를 매핑. 메타데이터 서명·만료·키 교체·다운그레이드/재생 방지 정책과 클라이언트 검증 계약 결정. format별 identity/업데이트 경로를 구별하고 MSIX에 MSP 실행 경로를 제공하지 않음. |
|
|
| BL-35 | P1 | 임시 업로드·검증·릴리스 등록 | BL-34 | 중단/재개·해시/서명/누락 검증·중복 릴리스 거부. 검증 실패는 격리, 불변 URL 등록, 준비 증빙 없는 Ready 차단. 업로드/승격 권한 분리와 감사 기록. |
|
|
| BL-36 | P0 | 인증·장치 그룹·대상 선택 API | BL-05, BL-35 | 사용자 주장만으로 테스트 그룹 진입 불가, 최초 장치 등록·다중 사용자 충돌 정책 구현. 그룹 목표 결정 후 현재 상태에 맞는 승인 경로 선택. 사용자별 응답 캐시 격리·패키지 다운로드 접근 통제. |
|
|
| BL-37 | P0 | 네트워크 설치·업데이터 연결 | BL-24, BL-27, BL-34, BL-36 | WebSetup의 고정 payload 경로와 사용자 목표 선택 책임 분리. 재개/프록시/만료 URL·해시/서명/메타데이터 검증 후 실행. 적용 직전 허가 재확인, 오프라인 라이선스의 전체 설치 경로 시험. 서버 장애 시 기존 앱 사용 유지. |
|
|
| BL-38 | P1 | 설치/실행 결과 수집·집계 | BL-06, BL-24, BL-36 | attemptId+이벤트 순서로 중복 제거·오프라인 재전송. 다운로드/취소/재부팅/미응답/실행 실패 별도 집계. 기준→목표별 패치 실패와 전체 복구 성공을 구분하고 개인정보 최소 수집/보존 정책 적용. |
|
|
| BL-39 | P0 | 수동 승인·중지·정책 충돌 | BL-06, BL-36~38 | 승인자·관측 증빙·정책 revision으로 4단계 승격. 릴리스 전체 중지와 패치만 중지를 구분하고 미승인 전체 경로 우회 차단. 적용 전 차단/시작 후 강제 종료 없음 확인. 필요 최소 CLI/API 제공, 복잡한 운영 UI는 제외. |
|
|
| BL-40 | P1 | 보존·정리·복원 운영 | BL-04, BL-20, BL-35 | 현재/복구/진행 설치/지원 패치의 참조 자료 삭제 차단. 정리 계획 미리보기와 승인 이력, 저장소·메타데이터 백업 복원 시험. 서명 payload와 기준 MSI 누락 탐지. |
|
|
|
|
## G. 출시 검증과 운영 인수 — 후속 적용
|
|
|
|
근거: [필수 검증](../plan/07-implementation-and-validation.md), [관측/승격](../plan/04-staged-rollout.md), [개발 일정](../plan/10-development-schedule.md).
|
|
|
|
| ID | 우선순위 | 작업 / 산출물 | 선행 조건 | 완료 기준 |
|
|
| --- | --- | --- | --- | --- |
|
|
| BL-42 | P0 | 전체 경로 회귀와 4단계 파일럿 | BL-06, BL-28, BL-33, BL-37~41, BL-43 | 실제 legacy→WiX→MSP→후속 업데이트와 설치 후 인증/도면/출력/플러그인 회귀 통과. 개발자→1차→2차→일반 사용자 단계마다 동일 아티팩트 해시·기준별 표본/실행/장애 지표로 승인. 표본 부족/중대 장애 시 보류. |
|
|
| BL-43 | P0 | 운영 절차·릴리스 체크리스트 | BL-03, BL-06, BL-22, BL-28, BL-39, BL-40 | 서명 장애·중지·복구·재부팅 대기·지원 문의·데이터 보존 절차 작성 및 모의훈련. 수정 릴리스와 일반 다운그레이드 금지 원칙 반영. 개발자 본인 검증과 외부 업무 사용자 승인 기록 분리. |
|
|
|
|
BL-42는 후속 EG-BIM 종합 시험부터 일반 공개까지 이어지는 상위 작업이다. 단계별 증빙을 남기며 최종 승격 전에는 항목 전체를 완료 처리하지 않는다. BL-41의 기반 구축은 MS1, 후속 회귀 실행은 각 마일스톤의 시험 시간에 포함한다.
|
|
|
|
## H. Microsoft Store — 별도 선택 일정
|
|
|
|
근거: [Store 계획](../plan/05-microsoft-store.md), [출력 프로필](../code-design/05-release-pipeline.md).
|
|
|
|
| ID | 우선순위 | 작업 / 산출물 | 선행 조건 | 완료 기준 |
|
|
| --- | --- | --- | --- | --- |
|
|
| BL-44 | P2 | 제품별 Store 제출 적합성 판정 | BL-53 | 등록할 제품의 EXE 또는 MSIX 적합성, 계정·권리·정책 확인. EXE는 단일 오프라인/무인/서명, MSIX는 Store identity·capability·의존성 검증. 미지원 제품 전환 비용은 별도 산정. MSIX 출력 구현을 이 작업으로 미루지 않음. |
|
|
| BL-45 | P2 | Store 제출·자체 업데이트 연계 | BL-44 | EXE는 고정 HTTPS URL·무인 인자, MSIX는 패키지 업로드·Store identity·Store 업데이트 경로로 제출. 대상 제품의 설치/업데이트 증빙 필수; EG-BIM을 제출할 때만 BL-42 적용 증빙 추가. 실제 제출·심사·공개 상태 구분, 미승인 결과를 공개 완료로 표시하지 않음. |
|
|
|
|
## I. MSIX 필수 기능 — MS0~MS6
|
|
|
|
근거: [범용 EXE·MSIX 구조](../code-design/11-generic-exe-msix-architecture.md). 기존 작업의 공통 필드·서명·VM 기반을 재사용하되 EXE 규칙을 MSIX에 강제하지 않는다.
|
|
|
|
| ID | 우선순위 | 작업 / 산출물 | 선행 조건 | 완료 기준 |
|
|
| --- | --- | --- | --- | --- |
|
|
| BL-46 | P0 | MSIX 우선 범위·제품 계약 | 없음 | 1차 MSIX/직접 배포, 후속 EXE/Store·HTML UI 경계 확정. format/delivery/distribution 모델은 유지. EG-BIM·Store·자체 인증 서버 없이 가능한 계약과 두 가상 제품 정의. |
|
|
| BL-47 | P0 | PackageBackend·MSIX 작업 조정기 | BL-10, BL-14, BL-46 | 1차 MsixBackend 포트와 대상별 검증/계획/결과/잠금 구현. MSIX-only에는 MSI 필드를 요구하지 않음. 직렬 다중 대상의 부분 실패·불변 결과 보존·새 buildId 재시도 검증. EXE/Store는 UnsupportedTarget. |
|
|
| BL-48 | P0 | MSIX manifest·identity·호환성 검사 | BL-11, BL-47 | Name/Publisher/4부분 Version/Architecture·최소 OS·실행 항목·자산·의존성·허용 capabilities 검증. MSI GUID 불필요, 임의 설치 경로·미지원 작업과 잘못된 Store identity 차단. |
|
|
| BL-49 | P1 | MakeAppx MSIX 생성 백엔드 | BL-02, BL-14, BL-48 | 고정 SDK로 staging→manifest→pack→내용/identity 검사. 검증 우회 금지, 원본 무변경, 누락 파일/자산·취소·디스크 부족 실패 기록. `.msix` 필수, bundle은 후속 범위. |
|
|
| BL-50 | P0 | MSIX 서명·불변 결과·내보내기 | BL-03, BL-14, BL-49 | 직접 배포 Publisher/인증서 일치·서명/신뢰·해시 검사. 개발/운영/미서명 상태, Finalized/DeploymentReady 분리. 동일 releaseId 덮어쓰기 금지, manifest·SDK·입력·패키지·로그·보고서 보존/내보내기. 인증서/타임스탬프 실패와 재시도 검증. EXE 저장소·Store 제출 프로필은 후속. |
|
|
| BL-51 | P1 | MSIX 업데이트·App Installer | BL-50, BL-41 | 상위 버전 전체 MSIX와 HTTPS App Installer 생성/검증. 파일 안내 URI와 버전별 패키지 URI·서명/identity·OS/스키마 조건 확인. 실행 중 업데이트·재시도·버전 건너뛰기·데이터 보존/제거 시험. Windows 차등 경로와 전체 선다운로드 차이를 기록. 인증/그룹 서버·EXE 전환은 후속. |
|
|
| BL-52 | P1 | MSIX 제작 UI·CLI 완성·접근성 | BL-29, BL-48, BL-50 | 1차 MSIX 설정만 노출하고 직접 배포/자동 업데이트 사용 설정. 실제 파일/자산/의존성/서명 프로필 편집과 출력 폴더 선택. 잘못된 버전·Publisher·실행 파일·URI의 원인/위치 안내. DPI·키보드·스크린 리더·취소/중단/재연결·긴 작업 UI·GUI/CLI 동등성 검증. HTML 설치 마법사 불필요. |
|
|
| BL-53 | P0 | MSIX 제품 완료·회귀·사용 안내 | BL-06, BL-16, BL-41, BL-48~52 | 두 독립 가상 제품 각각 MSIX 생성·실제 서명·직접 설치·실행·상위 버전 업데이트·제거·앱 데이터 정책 검증. 부분 실패·미서명/개발 결과 제한·원본 무변경·누락 런타임/자산·Publisher 오류 시험. 불변 증빙과 사용자 가이드/운영 절차 제공. EXE·Store·EG-BIM·자체 그룹 서버 없이 MS6 통과. |
|
|
|
|
## 첫 착수 순서
|
|
|
|
1. BL-46/02/03/06: MSIX 범위·도구·서명·설치/업데이트 실험과 완료 기준.
|
|
2. BL-09/10/11/14/47/16/41: 공통 모델·입력·작업 엔진·CLI·VM 기반.
|
|
3. BL-48/49: manifest와 실제 MSIX 생성.
|
|
4. BL-50: 서명·불변 결과·직접 배포 내보내기.
|
|
5. BL-51: App Installer 업데이트와 실제 적용 검증.
|
|
6. BL-29/52: 제작기 GUI와 IPC·실파일 편집·접근성.
|
|
7. BL-53: 두 제품 회귀와 MS6 출시 준비.
|
|
|
|
후속 35개 항목에는 날짜를 배정하지 않는다. 현재 작업의 필수 의존성이 후속 항목을 참조하지 않는지 변경마다 검사한다. 재개할 때 EXE/BA·실제 제품·서버/Store 범위를 다시 산정한다.
|