diff --git a/src/lib/server/cras-install.ts b/src/lib/server/cras-install.ts index acf79d1..04a8b99 100644 --- a/src/lib/server/cras-install.ts +++ b/src/lib/server/cras-install.ts @@ -1871,10 +1871,16 @@ export async function verifyWindowsDeployment( // desempacar un onefile de ~270 MB con Defender escaneando cada archivo se pasa de largo del // margen. Se sondea hasta que coincida, o hasta agotar los intentos. let deployed = ''; - // Margen generoso: desempacar un onefile de ~270 MB con Defender escaneando cada archivo se - // pasa de largo de los 30s que había antes, y agotar el margen ahora es un FALLO en una - // actualización, así que quedarse corto convertiría un despliegue bueno en un error. - const stampAttempts = isUpdate || inPlaceUpdate ? 45 : 3; + // ~5 minutos al actualizar. Los 88s de antes (45 × 2s) se quedaban cortos con un caso real: en + // los agentes hasta 1.1.4 el sello se escribía DETRÁS del re-despliegue de las deps embebidas, + // que al cambiar de versión se re-copian enteras, y eso va después de desempacar un onefile de + // ~254 MB con el antivirus escaneando. Se reportaba como fallida una actualización que iba + // bien. Desde 1.1.5 el agente escribe el sello lo primero y esto sobra, pero el margen tiene + // que cubrir los artefactos YA publicados, que no se pueden arreglar hacia atrás. + // + // Agotarlo es un FALLO en una actualización, así que quedarse corto convierte un despliegue + // bueno en un error — el error más caro de los dos. + const stampAttempts = isUpdate || inPlaceUpdate ? 150 : 3; for (let attempt = 0; attempt < stampAttempts; attempt += 1) { if (attempt > 0) await new Promise((resolve) => setTimeout(resolve, 2000)); const stamp = await execRemote(