mirror of
https://github.com/Pandipipas/scoreko-electron-dev.git
synced 2026-06-06 05:32:06 +00:00
114 lines
3.6 KiB
Markdown
114 lines
3.6 KiB
Markdown
# scoreko-electron-dev
|
|
|
|
Wrapper de Electron para empaquetar una instalación de NodeCG que incluya el bundle `scoreko-dev`, inspirado en `opeik/runback-electron` pero actualizado a Electron + TypeScript moderno.
|
|
|
|
## Requisitos clave
|
|
|
|
- Electron fijado en `39.5.1`.
|
|
|
|
## Qué hace
|
|
|
|
- Arranca `lib/nodecg/index.js` como proceso hijo desde Electron.
|
|
- Muestra la ruta de dashboard de carga del bundle (`/bundles/<bundle>/dashboard/loading.html`) servida por NodeCG mientras inicia.
|
|
- Carga el dashboard del bundle en `http://localhost:<puerto>/bundles/<bundle>/<ruta-dashboard>`.
|
|
- Empaqueta NodeCG + assets dentro de la app final con `electron-builder`.
|
|
|
|
## Estructura esperada
|
|
|
|
```text
|
|
scoreko-electron-dev/
|
|
├─ lib/
|
|
│ └─ nodecg/
|
|
│ ├─ index.js
|
|
│ ├─ node_modules/
|
|
│ └─ bundles/
|
|
│ └─ scoreko-dev/
|
|
├─ src/main/main.ts
|
|
├─ static/icons/
|
|
└─ package.json
|
|
```
|
|
|
|
## Scripts
|
|
|
|
- `npm run dev`: modo desarrollo.
|
|
- `npm run build`: compila TypeScript y copia assets.
|
|
- `npm run start`: build y ejecución local.
|
|
- `npm run pack`: genera app sin instalador.
|
|
- `npm run dist`: genera instalador.
|
|
- `npm run rebuild:native`: rebuild nativo auxiliar en `lib/nodecg`.
|
|
|
|
## Variables de entorno útiles
|
|
|
|
- `NODECG_BUNDLE_NAME` (default: `scoreko-dev`)
|
|
- `NODECG_PORT` (default: `9090`)
|
|
- `SCOREKO_DASHBOARD_ROUTE` (default: `dashboard/example/main.html?standalone=true`)
|
|
- `SCOREKO_LOADING_ROUTE` (default: `dashboard/loading/main.html?standalone=true`)
|
|
- `SCOREKO_APP_TITLE` (default: `Scoreko`)
|
|
- `SCOREKO_APP_USER_MODEL_ID` (default: `com.scoreko.desktop`)
|
|
- `SCOREKO_APP_ICON_PATH` (default: búsqueda automática en `static/icons/icon.ico` y `static/icons/icon.png`)
|
|
- `ELECTRON_LOAD_DELAY_MS` (default: `10000`)
|
|
- `NODECG_STARTUP_TIMEOUT_MS` (default: `30000`)
|
|
- `NODECG_KILL_TIMEOUT_MS` (default: `2500`)
|
|
|
|
## Assets de íconos incluidos
|
|
|
|
Se incluye `static/icons/` con placeholder editable:
|
|
|
|
- `static/icons/icon.svg`
|
|
|
|
> En este repo no se versionan binarios. Para distribución final agrega localmente `static/icons/icon.ico` (Windows) y/o `static/icons/icon.png` (Linux/macOS runtime).
|
|
|
|
## Personalización (Windows / Electron)
|
|
|
|
### 1) Título de la app
|
|
|
|
- **Runtime (ventanas):** `SCOREKO_APP_TITLE`.
|
|
- **Build (instalador y ejecutable):** `build.productName`.
|
|
|
|
### 2) Ícono en barra de tareas y esquina superior
|
|
|
|
Electron toma automáticamente el primer archivo existente en este orden:
|
|
|
|
1. `SCOREKO_APP_ICON_PATH` (si lo defines)
|
|
2. `static/icons/icon.ico`
|
|
3. `static/icons/icon.png`
|
|
4. `static/icon.ico`
|
|
5. `static/icon.png`
|
|
|
|
### 3) Ícono del `.exe` y accesos directos
|
|
|
|
Quedó configurado en `package.json` con `build.win.icon` + `build.nsis.installerIcon`/`uninstallerIcon`.
|
|
|
|
### 4) Nombre/autor del popup de Firewall de Windows
|
|
|
|
Ese diálogo usa metadata del ejecutable firmado:
|
|
|
|
- Nombre de app: normalmente `build.productName` y metadata del binario.
|
|
- Publisher/autor: certificado de firma de código (si no firmas puede verse `Unknown publisher`).
|
|
|
|
Campos clave a revisar:
|
|
|
|
- `description`
|
|
- `author`
|
|
- `build.productName`
|
|
- `build.win.executableName`
|
|
- `build.appId`
|
|
|
|
Además, firma el `.exe` con certificado (`CSC_LINK` / `CSC_KEY_PASSWORD` en `electron-builder`).
|
|
|
|
## Checklist de personalización extra
|
|
|
|
- `build.appId`
|
|
- `build.artifactName`
|
|
- `build.win.executableName`
|
|
- `build.win.icon`
|
|
- `build.nsis` (nombre del setup, íconos, shortcut)
|
|
- `build.mac.icon`
|
|
- `build.linux.icon`
|
|
- `SCOREKO_APP_USER_MODEL_ID`
|
|
- `SCOREKO_APP_ICON_PATH`
|
|
|
|
## Roadmap de refactor recomendado
|
|
|
|
Si quieres una propuesta detallada de refactorización, limpieza y mejoras sin romper funcionalidad, revisa: `docs/refactor-roadmap.md`.
|