feat: UpdateAgent Selbstaktualisierung & kopflose Installation, .NET 10 Migration, Backend- & SDK-Fixes

- .NET 10 Migration: Alle .NET-Projekte auf net10.0 umgestellt (#459)
- Client-SDK: ResolveAgentPath bereinigt und DLL-Pruefung ergaenzt (#458)
- Packager: Commit-Ermittlung aus publishDir / Assembly InformationalVersion (#456)
- BuildInfo.targets: ExitCode-Abfang und Regex-Validierung gegen Git-Fehlertexte (#363)
- UpdateService: Re-Publish erhaelt bestehende Manifeste und Werte (#457)
- Bugtracker API: on_roadmap-Filter in manage?action=list durchgereicht (#349)
- Watchdog API: project_slug-Filter in GET /status ergaenzt (#420)
- UpdateService API: no_release_for_platform mit verfuegbaren Plattformen (#421)
- Bugtracker Core: Fehler-Normalisierung gegen zersplitterte error_hashes (#419)
- UpdateAgent: Kopfloser Installationsmodus via --answers (#89)
- Installer & Agent: Automatische Selbstaktualisierung beim Start
- Tooling: AGENTS.md, CLAUDE.md und Standalone-CLI scripts/dc.py hinzugefuegt
This commit is contained in:
Deploymentcenter Bot
2026-09-02 23:43:37 +02:00
parent 8447b2d10a
commit 087f4392a9
26 changed files with 1582 additions and 67 deletions
@@ -308,20 +308,24 @@ namespace Deploymentcenter.Client
: directory!;
string candidate = Path.Combine(dir, AgentFileName);
if (File.Exists(candidate))
return candidate;
if (!File.Exists(candidate))
return null;
// Ein Paket, das fuer die jeweils andere Plattform gebaut wurde,
// bringt den Agenten unter dem dortigen Namen mit. Lieber finden
// als daran scheitern.
foreach (string alternative in new[] { "update-agent", "update-agent.exe" })
// Ist die Starterdatei ein Apphost eines Framework-abhaengigen Builds
// (erkennbar an einer runtimeconfig.json oder deps.json daneben),
// muss zwingend auch die verwaltete .dll vorhanden sein.
// Ohne diese wuerde Process.Start zwar gelingen, der Prozess aber
// unmittelbar mit "The application to execute does not exist" abbrechen.
string dllCandidate = Path.Combine(dir, "update-agent.dll");
string runtimeConfig = Path.Combine(dir, "update-agent.runtimeconfig.json");
string depsJson = Path.Combine(dir, "update-agent.deps.json");
if ((File.Exists(runtimeConfig) || File.Exists(depsJson)) && !File.Exists(dllCandidate))
{
string path = Path.Combine(dir, alternative);
if (File.Exists(path))
return path;
return null;
}
return null;
return candidate;
}
/// <summary>