# 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](https://github.com/cztomczak/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**를 원하는지가 명확하지 않으므로, 위 두 가지를 모두 후보로 두고 요구가 확정되면 하나를 골라 쓰면 됩니다.