Ir al contenido

Distribución de instaladores de escritorio

Los instaladores de la app de escritorio se hostean en Convex file storage — sin GitHub Releases público ni S3/R2, y sin el problema de los repos privados.

1. BUILD CI (build-desktop.yml) en tag v* → .dmg / .msi / .exe
(o local: bun run build:desktop)
2. UPLOAD super_admin sube en /super/releases → Convex storage
→ fila en la tabla desktop_releases
3. SERVE landing → query getDesktopDownloads (pública)
→ storage.getUrl() → enlaces; detecta el SO

Subir un instalador nuevo se refleja en el landing sin redeploy (query reactiva).

  1. Ingresá como super_admin a /super/releases.
  2. Elegí plataforma, versión (ej. 0.5.0) y archivo.
  3. “Subir instalador” → va a Convex storage y se registra.

La “última” por plataforma es la que sirve el landing.

Publicar desde la CLI (build + upload en un comando)

Sección titulada «Publicar desde la CLI (build + upload en un comando)»
Ventana de terminal
# en el backend, una vez:
npx convex env set RELEASE_UPLOAD_SECRET '<secreto-fuerte>'
# en cada plataforma (o en CI):
CONVEX_URL='https://<deployment>.convex.cloud' \
RELEASE_UPLOAD_SECRET='<secreto-fuerte>' \
npx tsx scripts/publish-desktop-release.ts --build --version 0.5.0

scripts/publish-desktop-release.ts buildea (con --build), busca los bundles en src-tauri/target/release/bundle/ y los sube vía las mutations CLI (generateUploadUrlCli / recordReleaseCli, autorizadas por RELEASE_UPLOAD_SECRET). Una máquina solo buildea su propio SO → correr en cada plataforma o en una matriz de CI.

La tarjeta “App de Escritorio” usa una query pública que devuelve la última descarga por plataforma con su URL de Convex storage, detecta el SO del visitante y lista las otras plataformas. Si no hay instaladores → “Próximamente”.

  • Bundles Tauri son chicos (~10–40 MB), cómodos para Convex storage. A gran escala de descargas, un CDN/R2 sería más barato en bandwidth.
  • On-prem no es un instalador descargable: es self-host. Su CTA es “Solicitar acceso”.