Distribución del Agente Local — CreaRackAgent-Setup.exe
Guía de distribución del Local Agent: cómo se compila, se publica y llega a los usuarios. Reescrita el 30-07-2026 (Agent 2.17.x): la versión anterior (17-02-2026) describía el método pre-Lanzador Estable (binario suelto + GitHub Releases como canal principal) y quedó obsoleta.
Última actualización: 30-07-2026 · Agent: 2.17.1
1. Qué se distribuye
Desde el Lanzador Estable (2.15.0) hay dos artefactos con vidas distintas:
| Artefacto | Qué es | Cuándo lo recibe el usuario |
|---|---|---|
CreaRackAgent-Setup.exe | Instalador Inno Setup 6 (2.17.0+; antes stub PyInstaller) con el Agente --onedir empaquetado | Primera instalación (botón Download Agent) y reinstalaciones manuales |
app-X.Y.Z.zip (+ .meta.json) | Paquete de código firmado (Ed25519, ~200 KB) | Auto-update del día a día — la flota NUNCA descarga el instalador |
El instalador despliega en %APPDATA%\CreaRackAgent sin admin, registra HKCU Run + protocolo
crearack://, crea el acceso del menú inicio, la entrada en “Agregar o quitar programas” y el
desinstalador nativo (unins000.exe). Soporta /VERYSILENT. Fuente: scripts/agent/installer.iss.
2. Pipeline de build — build_agent.bat
Requisitos de la máquina de build: Python 3.14 + PyInstaller, Inno Setup 6
(winget install JRSoftware.InnoSetup) y la clave de firma Ed25519.
Orden del script (cada paso es gate del siguiente):
- Verificación de estructura de módulos + deps desde
requirements-agent.lock. LICENSES_AGENT.txt(atribuciones para redistribución).- Paquete firmado
app-X.Y.Z.zip(scripts/agent/build_app_package.py) — se embebe en el .exe. - PyInstaller
--onedir→dist\CreaRackAgent\. - Self-test gate:
CreaRackAgent.exe --selftestforzando el código embebido — si falla, NO se publica. - ISCC compila
installer.iss→dist\CreaRackAgent-Setup.exe. - Publicación a Hetzner (ver §3).
CREARACK_BUILD_NO_PUBLISH=1= build de prueba sin publicar.
La versión sale SOLO de terminal/agent/version.py (AGENT_VERSION).
3. Canal de publicación: volumen app_media de Hetzner (PROD)
El SaaS sirve el instalador desde GET /downloads/CreaRackAgent.exe (core/agent_release.py)
leyendo el volumen app_media. build_agent.bat publica por SSH vía NetBird
(root@100.96.156.31; el :22 público quedó cerrado en s222): scp a /tmp + docker cp al
contenedor web.
Orden de publicación (anti-bucle, incidente 02-07-2026): PRIMERO el paquete (zip + meta),
DESPUÉS el instalador, y el sidecar CreaRackAgent-Setup.exe.version AL FINAL — el manifest
(/api/agent/manifest) anuncia la versión del sidecar, así jamás se ordena un update cuyos
artefactos no estén servidos.
4. GitHub Releases = copia de seguridad, no canal
Los usuarios NO descargan de GitHub. La disciplina de release (memoria
feedback_agent_release_discipline): cada bump de AGENT_VERSION → tag agent-vX.Y.Z en el
commit de main + Release con el .exe + paquete como assets. Solo se conserva el Release de
la versión en curso (los tags se conservan todos). Sirve para recuperar el binario servido si
el volumen se pierde.
5. Recordatorios
- Bump de
AGENT_VERSIONsin compilar+publicar en el MISMO ciclo = bucle de updates histórico (mitigado por el sidecar, PR #237, pero el orden sigue siendo ley). - Los artefactos publicados son inmutables: un fix tras publicar = nuevo bump, nunca re-publicar la misma versión con otro hash.
- El Agent .exe NO está en CI: tocar
build_agent.batexige auditar el build completo de una vez (memoriafeedback_agent_build_not_in_ci_audit_whole).
Referenciado desde
- Incidente: la rotación de agent.log nunca funcionó en el binario compilado (WinError 32)
- Local Agent - Debugging & Diagnostics Guide
- Local Agent — Referencia Rápida
- Modelo de despliegue del Local Agent de CreaRack: ¿cada usuario necesita un Agente en SU propia máquina (el navegador sondea 127.0.0.1:5050 local), o hay un modelo de Agente CENTRAL/compartido en un s