docs: define MSIX-first packaging design and roadmap
Document package formats, release workflows, deployment planning and UI concepts. Closes #1
This commit is contained in:
1 parent
54f0cfe360
commit
24b624301c
37 files changed
+7061
-61
No files matched your search
@@ -1,5 +1,9 @@
|
||||
# Rust + Tauri 구조와 모듈
|
||||
|
||||
2026-10-19 실행 범위 변경: 첫 구현은 MsixBackend만 제공하며 WixBackend/Burn 연결은 후속이다. WiX 도구를 설치하지 않은 환경에서도 MSIX 제작이 가능해야 한다. [현재 설계](12-msix-first-builder.md) 참조.
|
||||
|
||||
공통 엔진은 제품과 출력 형식에 독립적이다. EG-BIM·Baron·Grimi.exe를 코드에 고정하지 않는다. [범용 출력 계약](11-generic-exe-msix-architecture.md)에 따라 EXE와 MSIX 백엔드를 모두 제공한다.
|
||||
|
||||
## 실행 구조
|
||||
|
||||
```mermaid
|
||||
@@ -9,7 +13,9 @@ flowchart TD
|
||||
CLI[CI용 CLI] --> APP
|
||||
APP --> DOMAIN[프로젝트 검증 · 파일 해석 · 버전/패치 정책]
|
||||
APP --> ADAPTER[도구와 저장소 어댑터]
|
||||
ADAPTER --> WIX[WiX · Burn]
|
||||
ADAPTER --> BACKEND[PackageBackend · 출력별 capability 검사]
|
||||
BACKEND --> WIX[EXE: WiX · Burn]
|
||||
BACKEND --> MSIX[MSIX: Manifest · MakeAppx]
|
||||
ADAPTER --> SIGN[SignTool · 서명 공급자]
|
||||
ADAPTER --> STORE[작업 디렉터리 · 불변 릴리스 저장소]
|
||||
APP --> REPORT[진행 이벤트 · 검증 보고서]
|
||||
@@ -32,7 +38,8 @@ crates/
|
||||
package-domain/ # 타입과 순수 검증/비교 규칙
|
||||
package-engine/ # 작업 흐름, 취소, 상태, 포트 정의
|
||||
package-infra/ # 파일 I/O, WiX, 서명, Windows 프로세스
|
||||
templates/wix/ # 버전 관리되는 설치 정의 템플릿
|
||||
templates/wix/ # EXE/MSI 설치 정의 템플릿
|
||||
templates/msix/ # AppxManifest·자산 매핑 템플릿
|
||||
schemas/ # 프로젝트/매니페스트/IPC JSON Schema
|
||||
tests/fixtures/ # 작은 가상 제품과 기준 MSI 정의
|
||||
docs/
|
||||
@@ -51,6 +58,8 @@ docs/
|
||||
| InstallFlowCompiler | 단계 의존성과 설치 모드 검증, MSI/Burn 실행 정의로 변환 |
|
||||
| InstallerUiCompiler | UI 템플릿·리소스·바인딩 검증, 백엔드 기능 지원 검사 |
|
||||
| BuildCoordinator | 작업 잠금, 단계 실행, 체크포인트, 취소, 실패 기록 |
|
||||
| PackageBackend | format별 capabilities/validate/plan/build/inspect; 제품별 상수 없는 출력 계약 |
|
||||
| MsixBackend | manifest·자산·의존성 검사, MakeAppx 실행, 패키지 identity 추출 |
|
||||
| WixBackend | 설치 정의 생성, MSI/MSP/Burn 빌드, 결과 메타데이터 추출 |
|
||||
| Signer | 서명 정책 적용, 타임스탬프, 실제 서명 검증 결과 반환 |
|
||||
| ArtifactRepository | 기준 릴리스 조회, 콘텐츠 검증, 불변 결과 등록 |
|
||||
@@ -58,7 +67,7 @@ docs/
|
||||
|
||||
포트는 외부 도구를 가짜 구현으로 바꿀 수 있게 한다. 실제 Rust trait의 비동기 형태는 구현 시 확정하되, 모든 작업은 `BuildContext`, 취소 토큰, 타입이 지정된 요청과 결과를 받는다. 도구 종료 코드만 성공 기준으로 삼지 않는다.
|
||||
|
||||
후보 라이브러리는 `serde/serde_json`, `uuid`, `sha2`, `quick-xml`, `tokio`, `clap`, `tracing`이다. 도입 시 유지보수 상태·라이선스·Windows 지원을 확인하고 버전을 고정한다. WiX CLI와 확장, Windows SDK SignTool도 정확한 버전·파일 해시를 `toolchain.lock.json`에 기록한다. WiX 세대가 다른 명령 구문을 혼용하지 않는다.
|
||||
후보 라이브러리는 `serde/serde_json`, `uuid`, `sha2`, `quick-xml`, `tokio`, `clap`, `tracing`이다. 도입 시 유지보수 상태·라이선스·Windows 지원을 확인하고 버전을 고정한다. WiX CLI와 확장, Windows SDK MakeAppx·SignTool도 정확한 버전·파일 해시를 `toolchain.lock.json`에 기록한다. WiX 세대가 다른 명령 구문을 혼용하지 않는다.
|
||||
|
||||
## 작업 수명과 장애 복구
|
||||
|
||||
@@ -70,7 +79,7 @@ GUI 종료 시 실행 중 작업을 안내하고 취소를 요청할 수 있다.
|
||||
|
||||
## 권한 경계
|
||||
|
||||
생성기는 일반 사용자 권한으로 동작한다. 대상 HKLM 레지스트리를 편집하는 것은 생성된 설치기의 역할이다. 빌드 중 사용자 PC에 MSI/MSP를 설치하지 않는다.
|
||||
생성기는 일반 사용자 권한으로 동작한다. 대상 HKLM 레지스트리를 편집하는 것은 생성된 설치기의 역할이다. 빌드 중 사용자 PC에 MSI/MSP/MSIX를 설치하지 않는다. 설치 검증은 별도 VM에서 수행한다.
|
||||
|
||||
웹 UI에는 임의 셸 실행·임의 파일 쓰기 API를 노출하지 않는다. Rust가 허용한 프로젝트와 소스 루트 안에서 요청을 검증한다. 외부 도구는 절대 경로와 인자 배열로 실행하며 `.bat`, `cmd /c`, PowerShell 문자열 조합을 허용하지 않는다. Windows Job Object로 자식 프로세스 수명을 관리하고 실패·취소 시 남은 프로세스를 정리한다. [Rust Command](https://doc.rust-lang.org/std/process/struct.Command.html)
|
||||
|
||||
|
||||
Reference in new issue
Block a user