feat(sdk): --require-signature ueber LaunchUpdateAgent erreichbar

Der Schalter gab es bisher nur auf der Kommandozeile. LaunchUpdateAgent,
der vom Leitfaden empfohlene Weg, hatte dafuer keinen Parameter - jede
Anwendung, die diesem Weg folgte, aktualisierte damit ungeprueft, waehrend
derselbe Vorgang von Hand geschuetzt gewesen waere.

Neuer optionaler Parameter requireSignature (Vorgabe false, keine
Verhaltensaenderung fuer bestehende Aufrufer). Der oeffentliche Schluessel
muss dafuer nicht separat verwaltet werden, der Agent holt und cached ihn
selbst. SDK auf 2.5.2, Changelog- und Leitfaden-Eintrag ergaenzt.
This commit is contained in:
Deploymentcenter Bot
2026-08-15 13:38:33 +02:00
parent e579ca1acc
commit fc9b698141
4 changed files with 75 additions and 3 deletions
@@ -338,6 +338,15 @@ namespace Deploymentcenter.Client
/// Anwendung abwartet, bevor er Dateien ersetzt. Ohne diesen Handschlag
/// kopiert er bei langsamem Herunterfahren ueber gesperrte Dateien.
/// </param>
/// <param name="requireSignature">
/// Reicht <c>--require-signature</c> an den Agenten durch. Ohne diesen
/// Parameter gab es dafuer nur den Kommandozeilenschalter - jede
/// Anwendung, die dem Leitfaden folgt und ueber diese Methode
/// startet, aktualisierte damit ungeprueft, waehrend derselbe Aufruf
/// von Hand auf der Kommandozeile geschuetzt gewesen waere. Den
/// oeffentlichen Schluessel muss dafuer niemand selbst verwalten: der
/// Agent holt und cached ihn ohnehin von <c>/api/updateservice/v1/pubkey</c>.
/// </param>
public static bool LaunchUpdateAgent(
string agentPath,
string projectId,
@@ -351,7 +360,8 @@ namespace Deploymentcenter.Client
string? platform = null,
bool waitForCurrentProcess = true,
string? licenseKey = null,
int waitTimeoutSeconds = 60)
int waitTimeoutSeconds = 60,
bool requireSignature = false)
{
if (!File.Exists(agentPath))
{
@@ -418,6 +428,11 @@ namespace Deploymentcenter.Client
AppendArg(args, "--restart", restart!);
}
if (requireSignature)
{
AppendFlag(args, "--require-signature");
}
var startInfo = new ProcessStartInfo
{
FileName = agentPath,
@@ -468,6 +483,12 @@ namespace Deploymentcenter.Client
builder.Append("\" ");
}
private static void AppendFlag(StringBuilder builder, string name)
{
builder.Append(name);
builder.Append(' ');
}
private static string? GetCurrentExecutablePath()
{
try