Color scheme: Light
You are here: start » en » Documentation » Microsoft Access development tools » WKL Office SDK » WKL Office SDK reference » delivery-settings.json

delivery-settings.json

The delivery of an Access project: the version of the application, its targets and the release packages a delivery carries along. wkl-office deliver and the group Delivery of the add-in read it.

Signature

delivery\delivery-settings.json in the project folder, under version control:

{
  "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"
  }
}

Beside it, one file per delivery profile, delivery\<profile>.profile.json:

{ "format": 1, "configuration": "Release" }

Summary

One file per project, with what all delivery profiles share and the SDK cannot read from the sources: the version the delivery carries and where the release packages lie on the build machine. Each profile is a file of its own (delivery profiles). The starter's own settings (files, registry, shortcuts, conditions, the share it reads from) are in its project file per profile, delivery\<profile>.bootstrapper.json, edited with Bootstrapper Manager. A file in format 1 lists the delivered modes as targets instead; it stays valid.

It is not the delivery.json that WKL Bootstrapper writes beside a signed delivery in the source folder.

Parameters

EntryTypeDefaultDescription
formatnumberrequired1 (targets in this file) or 2 (delivery profiles). A higher number is refused.
versiontextrequiredThe version of the application (1.4.0), written into every app-manifest.json. --version of deliver overrides it.
targetslistrequired in format 1, at least oneThe targets, each a mode of the application model, each at most once. Refused in format 2.
targets[].modetextrequiredDevelopment (an ACCDB), Administration or Production (an ACCDE with the startup properties of the mode).
targets[].runtimeYes/Notrue for Production, else falseWhether the ACCDE is meant for the Access runtime (runtime of the manifest).
targets[].startertextdelivery/<mode>.bootstrapper.jsonThe starter's project file of the target, relative to the project folder.
targets[].outputtextbuild\Delivery\<mode>The delivery folder of the target (the folder the starter runs from, like the target folder of a publish profile): absolute, with environment variables, or relative to the project folder.
targets[].starterNametextWkl.Bootstrapper.exeThe file name of the starter in the delivery, ending in .exe (demo.exe). Up to WKL Bootstrapper 2.4.1 the default was Wkl.Access.Bootstrapper.exe; when the previous delivery in the folder used that name, deliver warns, because the users' shortcuts point to it. Set starterName to Wkl.Access.Bootstrapper.exe to keep it. Its project file is then written as <name>.bootstrapper.json (demo.bootstrapper.json), which the starter finds by its own name from 2.3.0 on, so several renamed starters (profiles) share one folder.
targets[].bitnesstextemptyany delivers the target for 32-bit and 64-bit Office from one build: an ACCDB without a saved compiled state, which Access compiles on first start in its own bitness. Empty delivers the database of the building Access (an ACCDE for Administration and Production). Any other value is refused.
packages.componentstextemptyThe release package of WKL Forms Object Library (folder with x86 and x64). Needed when the project references WklForms (up to release 1.x WklComponents). A package of another major version than the reference is an error.
packages.jsontextemptyThe release package of WKL Office JSON (formerly WKL Access JSON; the server is Wkl.Office.JSON.dll from 2.0.0, Wkl.Access.JSON.dll up to 1.0.3). Needed when the project references WklJSON. A package from 2.0.0 needs the starter 2.3.1 or later; with an older one deliver stops.
packages.bootstrappertextrequired for a deliveryThe release folder of WKL Bootstrapper (with Wkl.Bootstrapper.exe, up to 2.4.1 Wkl.Access.Bootstrapper.exe, and tools). WKL Forms Object Library 2.0 needs WKL Bootstrapper 3.1 or later; earlier versions know only release 1.x, and with one of them deliver stops.
packages.dotnettextemptyA private .NET runtime carried along, like a self-contained publish: a folder with x86 and/or x64, each a .NET installation folder (dotnet.exe, host, shared with Microsoft.WindowsDesktop.App). Copied to deploy\dotnet\<bitness>. Empty when the PCs have .NET installed.
packages.odbclistemptyODBC drivers carried along, each { "driver": "<name as in the connection texts>", "folder": "<folder with the driver's DLLs>" }, each driver once. Copied to deploy\odbc\<driver>.

Package paths may hold environment variables (%WKL_PACKAGES%) and may be relative to the project folder, so one file serves every machine whose packages lie elsewhere. Unknown entries are refused; a default is left out when the SDK writes the file.

Delivery profiles (format 2)

With "format": 2, delivery-settings.json keeps only what all targets share (version, publisher, supportEnd, requirePublisher, packages) and has no targets. Each target is a file of its own, delivery\<name>.profile.json, like a publish profile in Visual Studio; deliver and the add-in take the profiles in the order of their names.

{
  "format": 1,
  "configuration": "CustomerA",
  "starterName": "customers.exe"
}
EntryTypeDefaultDescription
formatnumberrequired1, the format of the profile file. A higher number is refused.
configurationtextrequiredThe build configuration of the project file the profile is built in (project file). Its AppMode is the mode of the delivery; a configuration that sets no mode is refused. Its ConnectionProfile links the tables.
runtimeYes/Notrue for Production, else falseAs targets[].runtime.
startertextdelivery/<name>.bootstrapper.jsonAs targets[].starter.
outputtextbuild\Delivery\<name>As targets[].output.
starterNametextWkl.Bootstrapper.exeAs targets[].starterName.
bitnesstextemptyAs targets[].bitness.
  • The name of a profile is its file name: letters, digits, spaces and - _ ., at most 64 characters, not starting or ending with a space or a dot, and no device name of Windows (CON, NUL …). deliver -p <name> delivers one profile.
  • Several profiles may deliver the same mode, for example one per customer, each with its own configuration (connection profile) and folder. Whether an ACCDE is delivered follows the mode, as in format 1: Development delivers an ACCDB; Accde of the configuration does not change that.
  • Format 1 stays valid. Its targets are read as profiles named after their mode and built in the configuration of that name when the project file has one, otherwise with the settings of the project; the mode is the target's own. The SDK does not rewrite a file of format 1 into format 2 by itself; Project Properties of the add-in writes format 2 once the delivery is changed there (use the Access add-in).

Remarks

  • Which libraries go along is read from the references of the project (source\references.json), by the GUID of their type library: WKL Forms Object Library and WKL Office JSON. References to Access, DAO, VBA or Office belong to Access and are not delivered.
  • A package is checked before anything is built: both bitnesses must be there (x86\<dll>, x64\<dll>) and its release (from x86\registration.json, else the folder name) must not be older than the reference. wkl-office deliver --dependencies lists the result.
  • The runtime and the drivers are not read from the sources: the SDK cannot tell whether the PCs have .NET or a driver installed already, so they go along only when packages names them. When the starter's project file is written from a template, the templates dotnet and odbc are added; the odbc template names an example driver, which the developer replaces in Bootstrapper Manager with the drivers named here.
  • A chosen delivery folder is emptied only when an earlier delivery wrote it (it is empty or holds deploy\app-manifest.json); any other folder - a share, the project folder by mistake - is refused and left as it is.
  • bitness: any builds twice. The first build compiles the code as a check; a compile error ends the delivery with exit code 4, as in build. The second build loads the same sources without compiling them and is the database that is delivered, so it carries no compiled state of the building Access. Its startup properties are those of the mode, as in an ACCDE. Because the delivery is an ACCDB, its code is readable and can be changed; deliver an ACCDE per bitness instead when that is not acceptable. The VBA code must be valid in both bitnesses (PtrSafe and LongPtr in Declare statements). app-manifest.json states "bitness": "any".
  • Product key per target: Production is delivered as the project name, Administration as the name with Admin, Development with Dev, so the copies on a user's PC never replace each other. Delivery profiles of the same mode share the product key; deliver them to different computers.

Code example

A delivery of production only, with packages beside the project:

{
  "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"
  }
}

A delivery to a share, with a renamed starter, a private runtime and the OData driver:

{
  "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" } ]
  }
}

A delivery for two customers in format 2, each built in its own configuration (delivery\delivery-settings.json, then delivery\Customer A.profile.json and delivery\Customer 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": "CustomerA", "output": "\\\\server-a\\apps\\Customers" }
{ "format": 1, "configuration": "CustomerB", "output": "\\\\server-b\\apps\\Customers" }

The configurations in the project file set the mode and the connection profile of each customer:

<PropertyGroup Condition="'$(Configuration)' == 'CustomerA'">
  <Accde>true</Accde>
  <AppMode>Production</AppMode>
  <ConnectionProfile>PROD-A</ConnectionProfile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'CustomerB'">
  <Accde>true</Accde>
  <AppMode>Production</AppMode>
  <ConnectionProfile>PROD-B</ConnectionProfile>
</PropertyGroup>
en/wiki/msaccess/sdk/reference/delivery-settings.txt · Last modified: by Wolfgang van der Stille