




















@@ -766,15 +766,35 @@ async function runUpgradeLane(params) {
766766logLanePhase(lane, "update");
767767const updateEnv = buildRealUpdateEnv(env);
768768const updateArgs = buildPackagedUpgradeUpdateArgs(params.candidateUrl);
769-const updateResult = await runOpenClaw({
770- lane,
771-env: updateEnv,
772-args: updateArgs,
773-logPath: join(params.logsDir, "upgrade-update.log"),
774-timeoutMs: updateTimeoutMs(),
775-check: false,
776-});
769+const updateLogPath = join(params.logsDir, "upgrade-update.log");
770+let updateResult;
771+let usedWindowsPackagedUpgradeTimeoutFallback = false;
772+try {
773+updateResult = await runOpenClaw({
774+ lane,
775+env: updateEnv,
776+args: updateArgs,
777+logPath: updateLogPath,
778+timeoutMs: updateTimeoutMs(),
779+check: false,
780+});
781+} catch (error) {
782+if (!isRecoverableWindowsPackagedUpgradeTimeoutError(error, process.platform)) {
783+throw error;
784+}
785+usedWindowsPackagedUpgradeTimeoutFallback = true;
786+appendFileSync(
787+updateLogPath,
788+`\n[release-checks] Windows baseline updater timed out after fetching candidate; falling back to direct candidate install: ${formatError(error)}\n`,
789+);
790+updateResult = {
791+exitCode: 124,
792+stdout: "",
793+stderr: formatError(error),
794+};
795+}
777796const usedWindowsPackagedUpgradeFallback =
797+usedWindowsPackagedUpgradeTimeoutFallback ||
778798isRecoverableWindowsPackagedUpgradeSwapCleanupFailure(updateResult, process.platform);
779799if (usedWindowsPackagedUpgradeFallback) {
780800logLanePhase(lane, "update-fallback-install");
@@ -1367,6 +1387,22 @@ export function isRecoverableWindowsPackagedUpgradeSwapCleanupFailure(
13671387);
13681388}
136913891390+export function isRecoverableWindowsPackagedUpgradeTimeoutError(
1391+error,
1392+platform = process.platform,
1393+) {
1394+if (platform !== "win32") {
1395+return false;
1396+}
1397+const message = error instanceof Error ? error.message : String(error);
1398+return (
1399+/\bCommand timed out:/u.test(message) &&
1400+/[/\\]openclaw\.mjs update --tag http:\/\/127\.0\.0\.1:\d+\/openclaw-current\.tgz --yes --json --timeout \d+/u.test(
1401+message,
1402+)
1403+);
1404+}
1405+13701406export function shouldRunPackagedUpgradeStatusProbe({
13711407 platform = process.platform,
13721408 usedWindowsPackagedUpgradeFallback,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。