프로젝트 소개
Zinnia는 Tauri로 구축되어 Windows, macOS, Linux용으로 배포되는 7-Zip 아카이브 처리용 그래픽 프런트엔드입니다. README에 따르면, 이 프로그램은 명령줄 대신 네이티브 GUI를 통해 구동되는 데스크톱 아카이버이며, 패키징 및 설치 작업은 운영 체제 자체에서 아카이브 작업에 접근할 수 있도록 하는 데 중점을 두었습니다.
README에 명시된 플랫폼 지원 범위는 다음과 같습니다. macOS 26 이상(해당 버전을 실행할 수 있는 Intel 및 Apple silicon 머신을 모두 지원하는 유니버설 빌드), Windows 10 버전 2004(빌드 19041) 이상의 x64 또는 ARM64, 그리고 Ubuntu 24.04+, Debian 13+ 또는 Fedora 43+(또는 필요한 WebKitGTK 런타임이 포함된 호환 배포판)의 Linux x64입니다. 공개 Linux 릴리스는 x64 AppImage, DEB, RPM 및 사이드로드된 Flatpak 번들로 제공되며, ARM64 AppImage/DEB/RPM은 릴리스를 위해 명시적으로 빌드된 경우에만 게시되고 Flatpak은 x64로 유지됩니다.
특히 운영 체제 통합에 많은 공을 들였습니다. 패키징된 빌드는 일반적인 아카이브 파일 형식을 등록합니다. Windows의 경우, NSIS 빌드는 클래식한 폴백 방식으로 "Open with Zinnia", "Extract with Zinnia", "Compress with Zinnia"라는 사용자별 Explorer 동사(verb)를 추가하며, 여기에는 Explorer의 "추가 옵션 표시"를 통한 경로가 포함됩니다. 서명된 Windows NSIS 빌드는 sparse identity MSIX와 zinnia_shell.dll을 통해 Windows 11 현대식 컨텍스트 메뉴를 추가로 등록하여, 아카이브에 대한 Zinnia 하위 메뉴와 최상위 Extract 항목을 제공합니다. 현대식 등록이 성공하면 중복을 피하기 위해 클래식 동사는 제거되며, 패키지 등록이 실패할 경우에만 폴백으로 남습니다. README는 Zinnia가 일반적인 사용자별 NSIS Win32 설치 상태를 유지하며, MSIX는 Store/AppX 앱 패키지가 아니라 Explorer가 셸 DLL을 로드할 수 있도록 패키지 ID만 부여하는 것임을 명시합니다.
Linux에서는 deb, rpm 및 Flatpak 번들에 데스크톱 열기(Open), 추출(Extract) 및 압축(Compress) 작업이 포함됩니다. macOS에서 사용자는 Finder의 "다음으로 열기/정보 가져오기" 기본 앱 흐름을 통해 Zinnia를 선택할 수 있으며, 아카이브 실행 시 빠른 추출 창으로 연결됩니다. 패키징된 빌드는 Finder Sync 컨텍스트 메뉴 항목과 "Extract with Zinnia" 및 "Compress with Zinnia"를 위한 Finder 서비스를 제공합니다. Finder Sync는 데스크톱, 문서, 다운로드, 영화, 음악, 사진 및 현재 마운트된 볼륨만 모니터링하며, 그 외 위치의 파일에는 Finder 서비스 사용이 권장됩니다.
개발 지침은 일반적인 Tauri 프로젝트와 동일합니다. npm install, npm run tauri:dev를 사용하며, src-tauri/Cargo.toml을 대상으로 cargo doc을 실행합니다. Tauri 빌드 스크립트가 네이티브 빌드 실행 전 추적된 자산에서 무시된 사이드카 바이너리를 갱신하므로, 별도의 준비 단계 없이 직접 Cargo 명령어를 사용할 수 있습니다.
빌드 스크립트는 플랫폼별로 명명되었습니다: build:win, build:mac:universal(이후 build:mac:zip), build:linux(또는 build:linux:x64), 네이티브 ARM64 환경을 위한 build:linux:arm64, 그리고 flatpak:bundle이 있습니다. 릴리스 서명은 GPG 스크립트를 통해 가능합니다.
README는 업데이트 및 릴리스 프로세스도 상세히 기록하고 있습니다. 업데이트 프로그램은 src-tauri/tauri.conf.json에 구성됩니다. CI는 Linux, Windows, macOS에서 테스트 및 확인을 수행하지만, 릴리스 바이너리를 빌드하거나 릴리스를 게시하거나 릴리스 서명 비밀값을 사용하지는 않습니다. 서명된 릴리스는 의도적으로 명시적인 과정을 거치며, 플랫폼별 릴리스 스크립트가 동일 버전의 GitHub 릴리스 초안에 업데이트 매니페스트, 아티팩트, 체크섬 파일 및 분리된 서명을 스테이징합니다. 베타 지속 스크립트는 베타 클라이언트가 라이브 피드를 폴링하므로, 태그가 여전히 초안 상태인 동안에도 VM의 베타 매니페스트를 최신 안정 릴리스 피드로 자동 동기화합니다. 복구를 위한 별도의 동기화 스크립트도 존재합니다. 초안 및 게시된 릴리스에 대해 예상 대상 매트릭스, 버전, 업데이트 아티팩트 서명 및 체크섬을 확인하는 검증 단계가 제공됩니다. 또한 GitHub의 임시 미태그 초안 식별자 처리 방법, 특정 커밋, 락파일, 플랫폼, 아키텍처 및 툴체인에 바인딩된 기존 릴리스 준비 세션 재개 방법, 그리고 패키지 버전을 네이티브 매니페스트, 변경 로그 다운로드 URL 및 AppStream 메타데이터로 복사하는 버전 전파 스크립트에 대한 안내가 포함되어 있습니다. README는 모든 플랫폼 아티팩트가 존재하고 업데이트 서명 및 체크섬이 확인되기 전에 릴리스 태그를 푸시하지 말라는 경고로 마무리됩니다.
추가 프로젝트 문서는 ARCHITECTURE.md, CONTRIBUTING.md, SECURITY.md와 저장소 내의 Windows 셸 및 QA 컨텍스트 메뉴 노트에서 참조할 수 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.