delivery-settings.json
Die Auslieferung eines Access-Projekts: die Version der Anwendung, ihre Ziele und die Release-Pakete, die eine
Auslieferung mitführt. wkl-office deliver und die Gruppe Herausgabe des Add-Ins lesen diese Datei.
Signatur
delivery\delivery-settings.json im Projektordner, unter Versionsverwaltung:
{
"format": 2,
"version": "1.4.0",
"packages": {
"components": "%WKL_PACKAGES%\\Wkl.Forms.ObjectLibrary\\2.0.0",
"json": "%WKL_PACKAGES%\\Wkl.Office.JSON\\2.0.0",
"bootstrapper": "%WKL_PACKAGES%\\Wkl.Bootstrapper\\3.1.0"
}
}
Daneben je Auslieferungsprofil eine Datei delivery\<profile>.profile.json:
{ "format": 1, "configuration": "Release" }
Zusammenfassung
Eine Datei je Projekt mit dem, was alle Auslieferungsprofile teilen und das SDK nicht aus den Quellen lesen kann: die
Version, die die Auslieferung trägt, und wo die Release-Pakete auf dem Build-Rechner liegen. Jedes Profil ist eine
eigene Datei (Auslieferungsprofile). Die eigenen Einstellungen des Starters (Dateien,
Registrierung, Verknüpfungen, Bedingungen, die Freigabe, aus der er liest) stehen in seiner Projektdatei je Profil,
delivery\<profile>.bootstrapper.json, die mit dem Bootstrapper Manager bearbeitet wird. Eine Datei im Format 1 nennt
stattdessen die ausgelieferten Modi als targets; sie gilt weiter.
Sie ist nicht die delivery.json, die WKL Bootstrapper neben eine signierte Auslieferung in den Quellordner
schreibt.
Parameter
| Eintrag | Typ | Standardwert | Beschreibung |
|---|---|---|---|
format | Zahl | erforderlich | 1 (Ziele in dieser Datei) oder 2 (Auslieferungsprofile). Eine höhere Zahl wird abgelehnt. |
version | Text | erforderlich | Die Version der Anwendung (1.4.0), die in jede app-manifest.json geschrieben wird. --version von deliver überschreibt sie. |
targets | Liste | im Format 1 erforderlich, mindestens eines | Die Ziele, jedes ein Modus des Anwendungsmodells, jedes höchstens einmal. Im Format 2 abgelehnt. |
targets[].mode | Text | erforderlich | Development (eine ACCDB), Administration oder Production (eine ACCDE mit den Starteigenschaften des Modus). |
targets[].runtime | Ja/Nein | true für Production, sonst false | Ob die ACCDE für die Access Runtime bestimmt ist (runtime des Manifests). |
targets[].starter | Text | delivery/<mode>.bootstrapper.json | Die Projektdatei des Starters für das Ziel, relativ zum Projektordner. |
targets[].output | Text | build\Delivery\<mode> | Der Auslieferungsordner des Ziels (der Ordner, aus dem der Starter läuft, wie der Zielordner eines Veröffentlichungsprofils): absolut, mit Umgebungsvariablen oder relativ zum Projektordner. |
targets[].starterName | Text | Wkl.Bootstrapper.exe | Der Dateiname des Starters in der Auslieferung, endend auf .exe (demo.exe). Bis WKL Bootstrapper 2.4.1 war Wkl.Access.Bootstrapper.exe der Standard; hatte die vorige Auslieferung im Ordner diesen Namen, warnt deliver, denn die Verknüpfungen der Anwender zeigen auf ihn. Mit starterName gleich Wkl.Access.Bootstrapper.exe bleibt er erhalten. Seine Projektdatei wird dann als <name>.bootstrapper.json geschrieben (demo.bootstrapper.json), die der Starter ab 2.3.0 über seinen eigenen Namen findet; mehrere umbenannte Starter (Profile) können sich so einen Ordner teilen. |
targets[].bitness | Text | leer | any liefert das Ziel aus einem Bau für 32-Bit- und 64-Bit-Office aus: eine ACCDB ohne gespeicherten Kompilierzustand, die Access beim ersten Start in seiner eigenen Bitbreite kompiliert. Leer liefert die Datenbank des bauenden Access aus (eine ACCDE für Administration und Production). Jeder andere Wert wird abgelehnt. |
packages.components | Text | leer | Das Release-Paket der WKL Forms Object Library (Ordner mit x86 und x64). Erforderlich, wenn das Projekt auf WklForms (bis Release 1.x WklComponents) verweist. Ein Paket einer anderen Hauptversion als der des Verweises ist ein Fehler. |
packages.json | Text | leer | Das Release-Paket von WKL Office JSON (früher WKL Access JSON; der Server heißt ab 2.0.0 Wkl.Office.JSON.dll, bis 1.0.3 Wkl.Access.JSON.dll). Erforderlich, wenn das Projekt auf WklJSON verweist. Ein Paket ab 2.0.0 braucht den Starter 2.3.1 oder höher; mit einem älteren bricht deliver ab. |
packages.bootstrapper | Text | für eine Auslieferung erforderlich | Der Release-Ordner von WKL Bootstrapper (mit Wkl.Bootstrapper.exe, bis 2.4.1 Wkl.Access.Bootstrapper.exe, und tools). Für WKL Forms Object Library 2.0 ist WKL Bootstrapper 3.1 oder höher nötig; ältere Versionen kennen nur Release 1.x, und mit ihnen bricht deliver ab. |
packages.dotnet | Text | leer | Eine mitgeführte private .NET-Runtime, wie bei einer eigenständigen Veröffentlichung: ein Ordner mit x86 und/oder x64, jeder ein .NET-Installationsordner (dotnet.exe, host, shared mit Microsoft.WindowsDesktop.App). Wird nach deploy\dotnet\<bitness> kopiert. Leer, wenn auf den Rechnern .NET installiert ist. |
packages.odbc | Liste | leer | Mitgeführte ODBC-Treiber, jeder als { "driver": "<name as in the connection texts>", "folder": "<folder with the driver's DLLs>" }, jeder Treiber einmal. Werden nach deploy\odbc\<driver> kopiert. |
Paketpfade dürfen Umgebungsvariablen enthalten (%WKL_PACKAGES%) und relativ zum Projektordner sein; eine Datei
bedient so jeden Rechner, auf dem die Pakete an einem anderen Ort liegen. Unbekannte Einträge werden abgelehnt; ein
Standardwert wird weggelassen, wenn das SDK die Datei schreibt.
Auslieferungsprofile (Format 2)
Mit "format": 2 enthält delivery-settings.json nur, was alle Ziele gemeinsam haben (version, publisher,
supportEnd, requirePublisher, packages), und keine targets. Jedes Ziel ist eine eigene Datei
delivery\<name>.profile.json, wie ein Veröffentlichungsprofil in Visual Studio; deliver und das Add-in nehmen die
Profile in der Reihenfolge ihrer Namen.
{
"format": 1,
"configuration": "KundeA",
"starterName": "kunden.exe"
}
| Eintrag | Typ | Standardwert | Beschreibung |
|---|---|---|---|
format | Zahl | erforderlich | 1, das Format der Profildatei. Eine höhere Zahl wird abgelehnt. |
configuration | Text | erforderlich | Die Build-Konfiguration der Projektdatei, in der das Profil gebaut wird (Projektdatei). Ihr AppMode ist der Modus der Auslieferung; eine Konfiguration ohne Modus wird abgelehnt. Ihr ConnectionProfile verknüpft die Tabellen. |
runtime | Ja/Nein | true für Production, sonst false | Wie targets[].runtime. |
starter | Text | delivery/<name>.bootstrapper.json | Wie targets[].starter. |
output | Text | build\Delivery\<name> | Wie targets[].output. |
starterName | Text | Wkl.Bootstrapper.exe | Wie targets[].starterName. |
bitness | Text | leer | Wie targets[].bitness. |
- Der Name eines Profils ist sein Dateiname: Buchstaben, Ziffern, Leerzeichen und
- _ ., höchstens 64 Zeichen, ohne Leerzeichen oder Punkt am Anfang oder Ende und kein Gerätename von Windows (CON,NUL…).deliver -p <name>liefert ein einzelnes Profil aus. - Mehrere Profile dürfen denselben Modus ausliefern, zum Beispiel eines je Kunde, jedes mit eigener Konfiguration (Verbindungsprofil) und eigenem Ordner. Ob eine ACCDE ausgeliefert wird, richtet sich wie im Format 1 nach dem Modus: Development liefert eine ACCDB;
Accdeder Konfiguration ändert das nicht. - Format 1 bleibt gültig. Seine Ziele werden als Profile mit dem Namen ihres Modus gelesen und in der gleichnamigen Konfiguration gebaut, wenn die Projektdatei eine hat, sonst mit den Einstellungen des Projekts; der Modus ist der des Ziels. Das SDK schreibt eine Datei im Format 1 nicht von sich aus ins Format 2 um; die Projekteigenschaften des Add-ins schreiben Format 2, sobald die Auslieferung dort geändert wird (Access-Add-In verwenden).
Hinweise
- Welche Bibliotheken mitgehen, wird aus den Verweisen des Projekts (
source\references.json) gelesen, anhand der GUID ihrer Typbibliothek: WKL Forms Object Library und WKL Office JSON. Verweise auf Access, DAO, VBA oder Office gehören zu Access und werden nicht ausgeliefert. - Ein Paket wird geprüft, bevor etwas gebaut wird: Beide Bitbreiten müssen vorhanden sein (
x86\<dll>,x64\<dll>), und sein Release (ausx86\registration.json, sonst aus dem Ordnernamen) darf nicht älter sein als der Verweis.wkl-office deliver --dependencieslistet das Ergebnis auf. - Runtime und Treiber werden nicht aus den Quellen gelesen: Das SDK kann nicht erkennen, ob auf den Rechnern .NET oder ein Treiber bereits installiert ist; sie gehen daher nur mit, wenn
packagessie nennt. Wird die Projektdatei des Starters aus einer Vorlage geschrieben, kommen die Vorlagendotnetundodbchinzu; die Vorlageodbcnennt einen Beispieltreiber, den der Entwickler im Bootstrapper Manager durch die hier genannten Treiber ersetzt. - Ein gewählter Auslieferungsordner wird nur geleert, wenn eine frühere Auslieferung ihn geschrieben hat (er ist leer oder enthält
deploy\app-manifest.json); jeder andere Ordner – eine Freigabe, versehentlich der Projektordner – wird abgelehnt und bleibt unverändert. bitness: anybaut zweimal. Der erste Bau kompiliert den Code zur Prüfung; ein Kompilierfehler beendet die Auslieferung mit Exitcode 4, wie beibuild. Der zweite Bau lädt dieselben Quellen ohne zu kompilieren und ist die ausgelieferte Datenbank; sie trägt deshalb keinen Kompilierzustand des bauenden Access. Ihre Starteigenschaften sind die der Betriebsart, wie bei einer ACCDE. Weil eine ACCDB ausgeliefert wird, ist der Code lesbar und änderbar; ist das nicht hinnehmbar, liefern Sie stattdessen je Bitbreite eine ACCDE aus. Der VBA-Code muss in beiden Bitbreiten gültig sein (PtrSafeundLongPtrinDeclare-Anweisungen).app-manifest.jsonnennt"bitness": "any".- Produktschlüssel je Ziel: Production wird unter dem Projektnamen ausgeliefert, Administration unter dem Namen mit
Admin, Development mitDev; die Kopien auf dem Rechner eines Benutzers ersetzen einander daher nie. Auslieferungsprofile desselben Modus teilen den Produktschlüssel; liefern Sie sie auf verschiedene Rechner aus.
Codebeispiel
Eine Auslieferung nur für die Produktion, mit Paketen neben dem Projekt:
{
"format": 1,
"version": "2.0.0",
"targets": [ { "mode": "Production" } ],
"packages": {
"components": "..\\packages\\Wkl.Forms.ObjectLibrary\\2.0.0",
"bootstrapper": "..\\packages\\Wkl.Bootstrapper\\3.1.0"
}
}
Eine Auslieferung auf eine Freigabe, mit umbenanntem Starter, einer privaten Runtime und dem OData-Treiber:
{
"format": 1,
"version": "2.0.0",
"targets": [ { "mode": "Production", "output": "\\\\server\\apps\\Demo", "starterName": "demo.exe" } ],
"packages": {
"components": "..\\packages\\Wkl.Forms.ObjectLibrary\\2.0",
"bootstrapper": "..\\packages\\Wkl.Bootstrapper\\3.1.0",
"dotnet": "..\\packages\\dotnet-10",
"odbc": [ { "driver": "Wkl OData", "folder": "..\\packages\\WklOData" } ]
}
}
Eine Auslieferung für zwei Kunden im Format 2, jede in ihrer eigenen Konfiguration gebaut
(delivery\delivery-settings.json, dann delivery\Kunde A.profile.json und delivery\Kunde B.profile.json):
{
"format": 2,
"version": "2.0.0",
"packages": {
"components": "..\\packages\\Wkl.Forms.ObjectLibrary\\2.1.0",
"bootstrapper": "..\\packages\\Wkl.Bootstrapper\\3.1.0"
}
}
{ "format": 1, "configuration": "KundeA", "output": "\\\\server-a\\apps\\Kunden" }
{ "format": 1, "configuration": "KundeB", "output": "\\\\server-b\\apps\\Kunden" }
Die Konfigurationen in der Projektdatei setzen Modus und Verbindungsprofil je Kunde:
<PropertyGroup Condition="'$(Configuration)' == 'KundeA'"> <Accde>true</Accde> <AppMode>Production</AppMode> <ConnectionProfile>PROD-A</ConnectionProfile> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)' == 'KundeB'"> <Accde>true</Accde> <AppMode>Production</AppMode> <ConnectionProfile>PROD-B</ConnectionProfile> </PropertyGroup>
Verwandte Themen
- Projektordner – welche Datei wo liegt und was versioniert wird
- Build-Konfiguration und Auslieferungsprofil – was eine Konfiguration und ein Profil festlegen