9a0f3f554b
Check server version on launch, download/install/relaunch if newer, then show the main UI. Manual update check no longer triggers full install. Co-authored-by: Cursor <cursoragent@cursor.com>
100 lines
3.7 KiB
Markdown
100 lines
3.7 KiB
Markdown
# GoldenChart Desktop (Tauri)
|
|
|
|
PC용 클라이언트 — [`frontend/src`](../frontend/src)를 `@frontend` alias로 재사용합니다.
|
|
API·DB는 exdev 서버에 연결하며, 웹 브라우저와 병행 사용 가능합니다.
|
|
|
|
## 개발
|
|
|
|
```bash
|
|
# 루트에서 — 최초 1회 (Homebrew + Rust + NSIS/LLVM)
|
|
npm run install:desktop:deps # 전체 (Windows 크로스 포함)
|
|
npm run install:desktop:deps -- --mac-only # macOS 빌드만
|
|
|
|
# PATH (새 터미널 또는)
|
|
source ~/.zprofile
|
|
# 또는
|
|
source scripts/desktop-dev-path.sh
|
|
```
|
|
|
|
사전 요구: [Tauri prerequisites](https://tauri.app/start/prerequisites/) (Rust, Xcode CLI 등)
|
|
|
|
## 빌드
|
|
|
|
```bash
|
|
npm run build:desktop:mac # macOS .dmg
|
|
npm run build:desktop:win # Windows NSIS (macOS에서 cargo-xwin 크로스 빌드)
|
|
./scripts/build-desktop.sh --all
|
|
```
|
|
|
|
산출물: `desktop/src-tauri/target/release/bundle/dmg/GoldenChart_*.dmg`
|
|
|
|
### macOS dmg 설치
|
|
|
|
1. dmg 더블클릭 → **GoldenChart.app** 을 **Applications(응용 프로그램)** 로 **드래그** (자동 설치 아님)
|
|
2. **Finder → 응용 프로그램 → GoldenChart** 실행 (`goldenChart` 아님, **GoldenChart**)
|
|
3. Launchpad에 없으면 Spotlight(`⌘+Space`)에 `GoldenChart` 검색
|
|
4. 창을 닫아도 **메뉴 막대 트레이**에 남음 — 트레이 아이콘 클릭으로 다시 열기
|
|
|
|
#### 「손상되었기 때문에 열 수 없습니다」 (Gatekeeper)
|
|
|
|
Chrome 등으로 다운로드한 dmg는 Apple **公証(notarization)** 이 없으면 macOS가 차단합니다. 앱 파일이 실제로 손상된 것은 아닙니다.
|
|
|
|
1. 경고에서 **취소** → Finder에서 GoldenChart **우클릭 → 열기** (최초 1회)
|
|
2. 또는 **시스템 설정 → 개인정보 보호 및 보안 → 그래도 열기**
|
|
3. 위 방법이 안 되면 터미널:
|
|
|
|
```bash
|
|
xattr -cr /Applications/GoldenChart.app
|
|
```
|
|
|
|
#### Jenkins / CI 코드 서명
|
|
|
|
빌드 시 기본 **ad-hoc 서명** (`signingIdentity: "-"`). Apple Developer ID가 있으면 Jenkins에 설정:
|
|
|
|
```bash
|
|
export APPLE_SIGNING_IDENTITY="Developer ID Application: Your Name (TEAMID)"
|
|
export APPLE_ID="..."
|
|
export APPLE_PASSWORD="app-specific-password"
|
|
export APPLE_TEAM_ID="..."
|
|
```
|
|
|
|
公証까지 완료되면 Gatekeeper 경고 없이 설치됩니다.
|
|
|
|
#### 실행 직후 바로 종료되는 경우
|
|
|
|
구버전 dmg(0.1.1 이전)는 Tauri updater가 `http://` 엔드포인트를 release 빌드에서 거부해 **시작 즉시 panic**합니다.
|
|
**최신 dmg를 다시 빌드·다운로드**하세요. 터미널에서 확인:
|
|
|
|
```bash
|
|
/Applications/GoldenChart.app/Contents/MacOS/goldenchart-desktop
|
|
# InsecureTransportProtocol / updater 오류 → dmg 재설치 필요
|
|
```
|
|
|
|
## 주요 기능
|
|
|
|
- **위젯 OS 창**: `WebviewWindow` + `widget.html`
|
|
- **트레이 상주**: 닫기 → 숨김, STOMP 백그라운드 유지
|
|
- **OS 알림**: 매매 시그널 → `tauri-plugin-notification`
|
|
- **업데이트**: 앱 시작 시 서버에 새 버전이 있으면 자동 다운로드·설치·재시작. 수동 확인은 설정 → PC 앱 또는 상단 업데이트 버튼.
|
|
|
|
자세한 배포·파일럿: [docs/desktop-pilot.md](../docs/desktop-pilot.md)
|
|
|
|
## 운영 스크립트
|
|
|
|
| 스크립트 | 용도 |
|
|
|---------|------|
|
|
| `scripts/install-desktop-build-deps.sh` | Rust, NSIS, cargo-xwin (macOS Jenkins) |
|
|
| `scripts/setup-desktop-updater-keys.sh` | updater minisign 키 생성 |
|
|
| `scripts/build-desktop.sh` | dmg + Windows NSIS + updater bundles |
|
|
| `scripts/publish-desktop-update.sh` | 서명 + latest.json + static 배포 |
|
|
| `scripts/jenkins-desktop-pipeline.sh` | Jenkins 전체 파이프라인 |
|
|
| `scripts/server-install-desktop-jenkins.sh` | Jenkins Job XML 생성 |
|
|
| `scripts/smoke-test-desktop.sh` | CI smoke test |
|
|
|
|
```bash
|
|
npm run install:desktop:deps
|
|
npm run setup:desktop:keys
|
|
npm run publish:desktop
|
|
npm run smoke:desktop
|
|
```
|