{ "_comment": "Vorlage fuer setup.json. Gehoert ins Wurzelverzeichnis des Publish-Ordners, damit sie im Paket neben der manifest.json landet. Der Installer liest sie nach dem Entpacken und fragt genau die Werte ab, die er nicht selbst ermitteln kann.", "schema": 1, "displayName": "Beispielanwendung", "description": "Fuer den Betrieb werden eine Datenbank und ein Zugang zum Kursdatenanbieter benoetigt.", "_targets_comment": "Wohin geschrieben wird. 'location' bestimmt den Bezugspunkt: install (Vorgabe, Installationsverzeichnis), config (%APPDATA% bzw. $XDG_CONFIG_HOME), data, home. In 'file' sind ${VAR} und %VAR% erlaubt, ein absoluter Pfad wird unveraendert benutzt. format ist 'json' oder 'env'. Ueber 'id' lassen sich einzelne Felder gezielt einer Datei zuordnen; ohne Angabe schreibt ein Feld in das erste Ziel.", "targets": [ { "id": "app", "file": "appsettings.json", "location": "install", "format": "json" }, { "id": "user", "file": "beispielanwendung/Settings.json", "location": "config", "format": "json" }, { "id": "env", "file": ".env", "location": "install", "format": "env" } ], "_fields_comment": "source steuert, ob gefragt wird: 'ask' (Vorgabe) fragt nach, 'detect:...' leitet ab, 'provision' laesst ein Token ausstellen. Ist der Wert in der Zieldatei bereits gesetzt und kein Platzhalter, wird er uebernommen und nicht erneut erfragt.", "fields": [ { "key": "ConnectionStrings:Main", "label": "Datenbankverbindung", "help": "Beispiel: Server=localhost;Database=beispiel;User Id=app;Password=...;", "type": "secret", "required": true }, { "key": "Marktdaten:ApiKey", "label": "API-Schluessel des Kursdatenanbieters", "type": "secret", "required": true, "validate": "^[A-Za-z0-9_-]{20,}$", "validationMessage": "Der Schluessel besteht aus mindestens 20 Zeichen ohne Leerzeichen." }, { "key": "Deploymentcenter:BaseUrl", "label": "Deploymentcenter", "type": "url", "source": "detect:baseurl" }, { "key": "Deploymentcenter:Token", "label": "Token dieser Installation", "source": "provision", "scopes": ["watchdog:ping", "bugtracker:report"] }, { "key": "Watchdog:Source", "label": "Name im Monitoring", "source": "detect:hostname" }, { "key": "Watchdog:IntervalSeconds", "label": "Heartbeat-Intervall in Sekunden", "type": "int", "default": "60", "required": false }, { "key": "Features:BetaAktiv", "label": "Beta-Funktionen einschalten", "type": "bool", "default": "false", "required": false }, { "key": "LOGLEVEL", "label": "Protokollierungsstufe", "target": "env", "type": "enum", "options": ["Debug", "Information", "Warning", "Error"], "default": "Information", "required": false } ] }