본문으로 건너뛰기

패키징

NeoTavern은 플랫폼별 네이티브 패키지로 배포됩니다. 각 패키지는 Node.js 사이드카, SQLite, 네이티브 애드온, 프로덕션 웹 에셋을 담고 있습니다.

배포 형식

데스크톱 빌드는 다음을 만듭니다.

  • Windows 설치 프로그램 — 사용자별 설치 모드의 NSIS 및 MSI 설치 프로그램. 설치 프로그램이 앱을 등록하고 사용자 데이터를 플랫폼의 앱 로컬 데이터 디렉터리에 둡니다.
  • Windows 포터블 빌드 — 실행 파일, 사이드카, portable.flag 마커, resources/가 들어 있는 ZIP과 .sha256 체크섬 파일. 플래그가 있으면 데이터가 앱 로컬 데이터 대신 애플리케이션 옆의 로컬 data/ 폴더에 있습니다.
  • macOS 패키지.app 번들. macOS 러너에서 DMG로 패키징됩니다.
  • Linux — AppImage와 아카이브.

각 형식은 네이티브 애드온을 번들하므로 자체 네이티브 플랫폼 러너에서 빌드되고 스모크 테스트됩니다. 준비된 아티팩트의 크로스 플랫폼 복사는 지원되지 않습니다.

패키지 안에 들어가는 것

모든 패키지에는 런타임에 앱이 필요로 하는 모든 것이 들어 있습니다.

  • Tauri 2 셸.
  • 자체 포함 Node.js 24 사이드카 실행 파일.
  • better-sqlite3을 통한 SQLite.
  • 이미지 처리를 위한 Sharp.
  • 프로덕션 웹 에셋.

Node.js, SQLite, 에셋이 패키지 안에 있으므로 사용자가 미리 설치할 것이 없습니다. Node.js, npm, 데이터베이스 설정이 필요 없습니다.

첫 실행

첫 실행이 제품의 핵심 약속입니다. 앱을 열면 동작합니다.

  1. 셸이 사이드카를 시작합니다.
  2. 백엔드가 데이터 디렉터리를 만들고, SQLite 데이터베이스를 초기화하며, 보류 중인 마이그레이션을 실행하고(보류 중인 스키마 변경 전에 백업 포함), 번들 테마와 시작 캐릭터를 채웁니다.
  3. 웹뷰가 준비된 애플리케이션 위에 열립니다.

터미널이 없고, 플랫폼 설치 마법사 외에 설치 마법사가 없으며, npm install과 수동 구성이 없습니다. 사용자가 채팅 배경을 선택하거나 플러그인을 설치했다 해도 그 어떤 것도 실행 파일에 있지 않습니다. 사용자 데이터는 번들과 분리되어 있으므로 업데이트가 사용자 파일을 건드리지 않고 코어를 교체합니다.

업데이트

릴리스 빌드는 아티팩트에 서명하고 Tauri 업데이터를 통합합니다. 업데이터는 플랫폼 아티팩트를 설치하기 전에 매니페스트와 minisign 서명을 검증한 다음 셸을 다시 시작합니다. 롤백은 이전에 검토된 코드를 새 서명 릴리스로 게시하는 것을 의미합니다. 서명되지 않은 다운그레이드는 허용되지 않습니다. 플러그인과 테마는 플러그인 및 테마 관리자를 통해 독립적으로 업데이트되며, 사용자 파일이 실행 가능한 업데이트 아티팩트에 들어가지 않습니다.

빌드

저장소에서 패키징 명령어는 다음과 같습니다.

pnpm desktop:prepare
pnpm desktop:build
pnpm desktop:portable
pnpm desktop:release

desktop:prepare는 서버와 웹을 빌드하고 대상별 네이티브 애드온을 복사하며 Tauri 대상 트리플 접미사로 사이드카를 만듭니다. desktop:portable은 추가로 NSIS/MSI 설치 프로그램과 체크섬이 있는 포터블 ZIP을 빌드한 다음 헤드리스 셸 스모크 테스트를 실행합니다. desktop:release는 서명된 업데이터 아티팩트를 만들며 릴리스 비밀이 필요합니다. 설치 프로그램 빌드는 빌드 머신에 Rust 안정 MSVC, Windows C++ Build Tools, WebView2가 필요합니다. 최종 사용자는 그중 어떤 것도 필요하지 않습니다.