Skip to content

feat: add Windows portable ZIP distribution - #108

Open
jeongjju wants to merge 1 commit into
golbin:mainfrom
jeongjju:feat/windows-portable
Open

jeongjju wants to merge 1 commit into
golbin:mainfrom
jeongjju:feat/windows-portable

Conversation

@jeongjju

Copy link
Copy Markdown

설치 프로그램을 사용할 수 없는 회사 PC에서도 HOP를 실행할 수 있도록 Windows x64 포터블 ZIP 배포를 추가합니다. 압축을 전체 해제한 뒤 HOP/HOP.exe를 실행할 수 있습니다.

변경 내용

  • pnpm run build:portable:windows로 HOP-windows-x64-portable.zip을 생성합니다. 실행 파일, PDF용 Noto Sans KR 글꼴과 라이선스, HOP 라이선스, 버전과 사용 안내를 포함합니다.
  • 실행 파일 옆의 hop-portable.json으로 포터블 모드를 감지하고, 설치 프로그램을 실행하는 자동 업데이트 확인과 설치를 차단합니다.
  • 선택적으로 WebView2 폴더의 x64 Fixed Version 런타임을 사용합니다. 런타임을 자동 다운로드하거나 설치하지 않습니다.
  • 포터블 ZIP 전용 수동 Actions 워크플로를 추가하고, 기존 Windows 릴리스에도 ZIP을 별도 artifact 및 체크섬 대상 asset으로 연결합니다.
  • 일반 CI에서 Windows 패키징 회귀 검사를 실행합니다. Windows의 CRLF 변환으로 vendored WASM 원본 해시가 달라지지 않도록 Git 속성을 추가하고, 경계 검사의 Windows 경로 구분자 처리를 수정합니다.

기존 설치 파일 이름과 updater manifest는 유지합니다. rhwp 소스와 서브모듈 포인터, 제품 버전은 변경하지 않습니다. 설정·최근 문서·로그·캐시는 기존 사용자 AppData 경로를 사용하며, 파일 연결은 자동 등록하지 않습니다.

검증

  • Windows x64 최적화 릴리스 빌드 및 실제 ZIP 생성 성공.
  • 실제 ZIP을 한글·공백 경로에 압축 해제하고 7개 구성 파일, PE x64 아키텍처, 포터블 마커 지원, 버전, 실행 파일·글꼴 원본 해시 일치를 확인.
  • pnpm upstream:verify 통과.
  • pnpm run test:studio: 22개 파일, 159개 테스트 통과.
  • pnpm run test:upstream: 33개 테스트 통과, Windows에서 기존 셸 검사 1개 제외.
  • pnpm run test:portable:windows 통과: 기본 ZIP, 선택 런타임과 라이선스, 한글·공백 경로, 잘못된 입력, 경로 이탈 거부, 실패 시 기존 ZIP 보존과 임시 폴더 정리.
  • 기존 portable.rs의 마커 감지 Rust 단위 테스트를 빌드된 의존성으로 별도 컴파일해 실행: 1개 통과.
  • git diff --check 통과.

추가 확인이 필요한 항목

실제 GUI에서 문서 열기·편집·저장·PDF 내보내기·인쇄, 일반 사용자 계정 실행, 설치형 HOP와의 전환, 실제 Fixed Version WebView2 실행은 아직 확인하지 못했습니다. macOS/Linux 빌드, 전체 Rust 테스트와 clippy도 이번 로컬 검증에는 포함하지 않았습니다. 이를 명시하기 위해 Draft PR로 제출합니다.

기본 ZIP에는 WebView2 런타임이 포함되지 않습니다. 설치된 런타임이 없는 PC에는 배포 담당자가 Fixed Version을 포함한 ZIP을 제공해야 하며, 해당 런타임의 보안 업데이트와 Windows 10 권한 준비는 수동으로 관리합니다.

Package the Windows executable with PDF fonts, licenses and a portable marker; disable installer updates in portable mode and support an optional app-local WebView2 runtime.

Add portable-only and release workflows, Windows packaging CI, documentation, and Windows-safe artifact/path handling. Preserve existing installer assets, rhwp sources and the pinned upstream revision.

Verified Windows x64 release build and ZIP extraction; studio 159 tests, upstream 33 tests (1 skipped), packaging regression checks, isolated Rust marker test and upstream contract. GUI smoke tests, full Rust tests/clippy and macOS/Linux builds remain pending.
@jeongjju
jeongjju marked this pull request as ready for review October 14, 2026 23:12

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant