app-manifest.json
The description of one delivered target of an Access application, written by
tools/build/Build-AccessApp.ps1 next to the delivered file when the project file has a deploy
entry (access-app.json). It tells the program that places the application on a
user's computer what the file is, which version it has and what it needs.
Signature
{
"format": 1,
"product": "Kunden",
"version": "1.4.0",
"target": "Production",
"file": "Kunden.accde",
"sha256": "3f5a...e09c",
"size": 1835008,
"bitness": "x86",
"runtime": true,
"requires": [ { "library": "WklForms", "version": "2.0" } ],
"built": "2026-10-12T09:30:00Z"
}
Summary
One file per target folder, UTF-8 without byte order mark. A program reads it to check the delivered
file (sha256, size) and to decide whether the computer can run it (bitness, runtime,
requires).
Parameters
| Entry | Type | Description |
|---|---|---|
format | number | Version of the schema of this manifest: 1. A reader refuses a higher number it does not know. It has nothing to do with the formats 1 and 2 of the starter's bootstrapper.json (Wkl.Bootstrapper): a manifest of schema 1 is read by projects of either format. |
product | text | name of the project file. |
version | text | deploy.version of the project file. |
target | text | Development, Administration or Production. |
file | text | File name of the delivered database in the same folder. |
sha256 | text | SHA-256 (FIPS 180-4) of the file, lower-case hexadecimal. |
size | number | Size of the file in bytes. |
bitness | text | x86 or x64 for an ACCDE - it runs only in Access of the bitness it was built with -, any for an ACCDB. |
runtime | Yes/No | true for production: the file is meant for the Access Runtime. Administration needs full Access; development is an ACCDB for developers. |
requires | list | The type libraries of the project's references that name a library (WklForms, WklJSON), each with the version the application was built against: the version Access recorded in the database, which is the highest one registered on the build machine (the build warns when it is above the version in references). Manifests of applications built against release 1.x name the library WklComponents, as it was called up to 1.68. |
built | text | Time of the build, UTC (ISO 8601). |
Remarks
sha256andsizedescribe the file as built, before it is opened. Access writes to an ACCDE or ACCDB when it opens it, also with/runtime, so its size and checksum change. A file in the output folder that was opened once no longer matches its manifest. Test a delivery on a copy: copy the file, compare size and checksum with the manifest, then open the copy.- A read-only place keeps the file unchanged. The writing on opening is not required: in a folder where the user may only read (for example under
Program Files, or a share with read access only), Access opens the ACCDE without writing it, without a lock file (.laccdb) and without an error or a message, also with/runtime, and two Access instances can have it open at the same time; size and checksum stay unchanged. An application that writes files next to itself (a log, a report) cannot do that there; such files belong in a folder of the user. - What the target's file already contains: the startup properties of its mode from the application model (navigation pane, menus, special keys, bypass key, status bar, title, start form, ribbon). They act at the first opening on the user's computer.
- Version of the WKL libraries: a database runs with the registered release of its version or a newer one; with an older one it is not supported and can break with error 459 (How to: Deploy to user PCs).
builtchanges with every build; compare files bysha256, not the manifest as a whole.- The checksum detects a damaged copy, not a deliberate change:
sha256stands in the same unsigned file, so whoever can replace the file can replace the manifest.
Code example
Checking a delivered file in PowerShell before placing it:
$manifest = Get-Content .\production\app-manifest.json -Raw | ConvertFrom-Json $hash = (Get-FileHash (Join-Path .\production $manifest.file) -Algorithm SHA256).Hash.ToLowerInvariant() if ($hash -ne $manifest.sha256) { throw "$($manifest.file) ist beschaedigt." }
Inheritance
None
en/wiki/msaccess/comctl/reference/app-manifest-json.txt · Zuletzt geändert: von Wolfgang van der Stille