docs: la tarea programada tiene que apuntar a lo que se instalo
BUILD.md gana la seccion del fallo silencioso y como reproducirlo con scripts/emular-actualizacion-windows.ps1. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
24
BUILD.md
24
BUILD.md
@@ -222,6 +222,30 @@ Reemplazar el binario de un servidor en producción no puede dejarlo sin restaur
|
||||
3. **Se confirma que el agente volvió a arrancar** y, si no, se **revierte** al binario anterior.
|
||||
El respaldo solo se descarta tras esa confirmación.
|
||||
|
||||
### La tarea programada tiene que apuntar a lo que se instaló
|
||||
|
||||
Reemplazar el binario es una operación por **ruta**; `Start-ScheduledTask` es por **nombre** y
|
||||
ejecuta la ruta que la tarea lleva registrada en su acción. Cuando las dos no coinciden —una
|
||||
instalación fuera de la carpeta por omisión, o movida de sitio— se copiaba el binario nuevo en un
|
||||
lado y se arrancaba el viejo del otro: **el run terminaba en verde y el servidor seguía igual**.
|
||||
|
||||
`install.ps1` compara la acción de la tarea con el `-Prefix` y la **reapunta** si difieren,
|
||||
conservando disparador, principal, ajustes y argumentos. Si no puede corregirla, falla: arrancar a
|
||||
sabiendas el binario anterior es peor que abortar. Y la confirmación de arranque mira la **ruta**
|
||||
del proceso, no solo su nombre — un agente viejo que nunca se detuvo satisface igual de bien un
|
||||
`Get-Process -Name CloudRestoreAS`.
|
||||
|
||||
Para reproducirlo y comprobarlo sin un servidor, desde WSL o Windows:
|
||||
|
||||
```powershell
|
||||
scripts\emular-actualizacion-windows.ps1 -Installer .\install.ps1 # caso roto
|
||||
scripts\emular-actualizacion-windows.ps1 -Installer .\install.ps1 -Escenario alineada # caso normal
|
||||
```
|
||||
|
||||
Monta un agente falso (un `.exe` real que se queda vivo), una instalación en una carpeta y una
|
||||
tarea apuntando a otra, corre el instalador y dice si la actualización surtió efecto. No necesita
|
||||
elevación ni toca la instalación real de la máquina.
|
||||
|
||||
`-UpdateInPlace` además no vuelve a registrar la tarea (así no pisa ajustes hechos sobre ella) y
|
||||
se salta el bootstrap: una segunda instancia purgaría el `Temp\` de la que está viva. Es el modo
|
||||
que usa el PANEL para actualizar.
|
||||
|
||||
Reference in New Issue
Block a user