Files
jongryangje/docs/기본 개발계획/17-desktop-packaging-options.md
2026-04-08 00:23:55 +09:00

5.1 KiB

CI4 웹 버전 완성 후 설치형 데스크톱으로 만들 때 사용 기술

웹 버전(CI4 + PHP + MariaDB)이 완성된 뒤, 설치형 데스크톱으로 제공할 때 고려할 수 있는 기술·방식입니다.

선택: Electron 방식 사용 예정. (로컬 PHP 서버 기동 + Electron 창에서 CI4 웹 로드. 기간 영향은 16-web-development-duration-estimate.md §7 참고.)


1. 전제

  • CI4 앱 = 서버에서 PHP가 HTML을 렌더링하는 서버 사이드 구조.
  • “설치형 데스크톱” = 사용자 PC에 설치 파일(또는 포터블) 로 제공하고, 실행하면 창 하나로 앱처럼 쓰는 형태.

이걸 만드는 방식은 크게 두 가지입니다.

  1. 웹 앱을 그대로 두고, “데스크톱 껍데기”만 씌우기
    → 로컬에서 PHP + 웹 서버를 띄우고, 그걸 내장 브라우저로 보여 주는 방식.
    사용 기술: PHP Desktop(Chromium 임베드), ExeOutput for PHP, 또는 Electron + 로컬 PHP 서버 등.

  2. 웹을 API 서버로 바꾸고, 데스크톱 전용 클라이언트를 새로 만들기
    → CI4는 REST API만 제공하고, 데스크톱 앱은 Electron / Tauri / Qt 등으로 별도 클라이언트 개발.
    → 웹 UI를 대폭 수정하거나, 데스크톱만의 UI를 만드는 작업이 필요.

지자체 내부 서버 설치형이면 “웹을 브라우저로 접속”만 해도 되고,
진짜 PC 한 대에 단독 설치해서 쓰는 “데스크톱 앱”이 필요할 때만 아래 기술을 쓰면 됩니다.


2. 웹 그대로 둔 상태에서 데스크톱 껍데기 (추천 후보)

CI4 소스를 거의 수정하지 않고, 로컬에서 PHP + DB를 돌리고 창으로 보여 주는 방식입니다.

2.1 PHP Desktop (phpdesktop)

  • 역할: Chromium(Chrome 엔진) 을 내장한 창에서 로컬 PHP 앱을 실행.
  • 구성: PHP 실행 파일 + Chromium + 프로젝트 폴더를 묶어서, 실행 시 내장 웹 서버 또는 PHP 내장 서버로 CI4를 띄우고, 그 주소를 Chromium 창에 띄움.
  • 특징: 오픈소스, 무료. PHP 기반 웹 앱을 exe/설치형으로 감쌀 때 자주 쓰임.
  • 한계: DB(MariaDB)는 별도 설치하거나, SQLite로 바꾸거나, 포터블 MariaDB를 번들해야 함.
  • 참고: phpdesktop (GitHub).

2.2 ExeOutput for PHP (상용)

  • 역할: PHP 스크립트를 exe로 패키징해 주는 상용 도구.
  • 특징: 설치형/포터블 배포, 인스톨러 제작 등 지원. PHP Desktop과 개념적으로 비슷(로컬 PHP + 브라우저 창).
  • 참고: ExeOutput for PHP 제품 문서.

2.3 Electron + 로컬 PHP 서버

  • 역할: Electron 앱이 사용자 PC에서 PHP 내장 서버(또는 소형 웹 서버)를 기동하고, Electron 창에서 http://localhost:... 로 CI4 웹을 띄움.
  • 특징: Node.js 생태계 활용 가능. 다만 PHP 실행 파일·런타임을 함께 묶고, 기동/종료 스크립트를 직접 짜야 함.
  • 기술: Electron, Node.js, (선택) node-php 또는 child_process로 PHP 프로세스 실행.

이 경우 **“사용하는 기술”**은
PHP Desktop 이라면 PHP + Chromium(CEF) + (선택) SQLite/포터블 MariaDB,
Electron 이라면 Electron + Node.js + PHP 런타임 번들 이라고 보면 됩니다.


3. API 분리 후 데스크톱 클라이언트만 새로 만들기

  • 역할: CI4는 REST API 전용으로 두고, 데스크톱 앱은 전용 클라이언트를 따로 만듦.
  • 데스크톱 쪽 기술 예:
    • Electron (HTML/CSS/JS + Node) — 웹 기술 그대로 사용.
    • Tauri (Rust + 웹뷰) — 바이너리 크기·리소스가 Electron보다 작음.
    • Qt + C++/Python — 네이티브 UI.
  • 특징: 웹 UI와 데스크톱 UI를 나눌 수 있지만, CI4를 API 서버로 바꾸는 작업 + 클라이언트 개발이 들어가서 공수가 큼. “웹 버전 완성 후 데스크톱만 추가”라기보다는 아키텍처 변경에 가깝습니다.

4. 정리 (질문에 대한 답)

“CI4 웹 버전이 완성되면, 설치형 데스크톱으로 만들 때 사용하는 기술은 뭐냐?”

  • 웹 구조를 최대한 유지하면서 데스크톱처럼 쓰게 하려면:
    PHP Desktop(Chromium + PHP) 또는 Electron + 로컬 PHP 서버 같은 “로컬 PHP 웹 앱 + 내장 브라우저 창” 조합을 쓰게 됩니다.
    DB는 로컬 MariaDB 설치 또는 SQLite 전환 등을 함께 결정해야 합니다.

  • 데스크톱 전용 클라이언트를 새로 만든다면:
    Electron, Tauri, Qt 등이 후보이고, 이때는 CI4는 백엔드 API 역할만 하게 됩니다.

현재 문서상으로는 “설치형”이 지자체 내부 서버에 웹을 설치해 브라우저로 접속하는 형태인지, PC 한 대 단독 설치형 데스크톱 exe를 원하는지가 명확하지 않으므로, 위 두 가지를 모두 후보로 두고 요구가 확정되면 하나를 골라 쓰면 됩니다.