Farbschema: Dunkel
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » reference » access-app.json

access-app.json

Die Projektdatei einer Access-Anwendung, die tools/build/Build-AccessApp.ps1 baut: woraus die Anwendung besteht und wo ihre Textquellen liegen. Das Repository ist die Quelle; ACCDB und ACCDE sind Build-Ergebnisse.

Neue Projekte: Das WKL Office SDK baut, exportiert und prüft Access-Anwendungen aus Quellen mit mehr Schritten als dieses Build-Werkzeug (Status und Abgleich mit dem geöffneten Access, Rundlaufprüfung, MSBuild, ein Access-Add-In) und übernimmt access-app.json mit wkl-office migrate access-app.json -o <folder> (Dokumentation von WKL Office SDK, „Projekt des Build-Werkzeugs der WKL Forms Object Library migrieren“). Dieses Build-Werkzeug funktioniert für bestehende Projekte weiter.

Signatur

{
  "name": "Kunden",
  "output": "out",
  "references": [
    { "library": "WklForms", "major": 2, "minor": 0 },
    { "library": "WklJSON", "major": 1, "minor": 0 },
    { "guid": "{00025E01-0000-0000-C000-000000000046}", "major": 5, "minor": 0 }
  ],
  "tables": "src/tables",
  "modules": "src/modules",
  "macros": "src/macros",
  "theme": { "folder": "src/theme", "name": "Riviera" },
  "ribbons": "src/ribbons",
  "queries": "src/queries",
  "forms": "src/forms",
  "reports": "src/reports",
  "controlBlocks": "src/controls",
  "properties": { "AppTitle": "Kunden", "StartUpForm": "frmShell", "CustomRibbonID": "AppRibbon", "StartUpShowDBWindow": false },
  "appModel": "src/app/app-model.json",
  "accde": true,
  "deploy": { "folder": "deploy", "version": "1.4.0", "targets": ["Administration", "Production"] }
}

Zusammenfassung

Benennt die Anwendung und ihre Quellordner. Jeder Eintrag außer name ist optional; ein Ordner, der nicht genannt ist, wird nicht gebaut. Pfade sind relativ zum Ordner der Projektdatei; ein absoluter Pfad (zum Beispiel themes/riviera des Release-Pakets) wird unverändert übernommen, beim Build ebenso wie beim Export.

Parameter

EintragTypStandardwertBeschreibung
nameText–Dateiname der ACCDB und ACCDE (Buchstaben, Ziffern, _, ., -).
templateTextkeinerEin Vorlagenprojekt, aus dem die Anwendung zusätzlich gebaut wird: ein Ordner mit eigener access-app.json (absolut, relativ zur Projektdatei oder ein Name aus dem Ordner templates des Release-Pakets wie app-shell). Seine Dateien kommen zu den Ordnern der Anwendung hinzu, eine gleichnamige Datei der Anwendung ersetzt die der Vorlage; references und properties werden zusammengeführt (die der Anwendung haben Vorrang), theme, ribbonModel, navPaneModel, controlBlocks und finish stammen aus der Vorlage, wenn die Anwendung keine nennt. Eine Vorlage, die ihrerseits eine Vorlage nennt, wird abgelehnt.
outputTextoutAusgabeordner; -Output des Skripts hat Vorrang.
referencesListekeineHinzuzufügende Verweise: library = WklForms oder WklJSON (die WKL-Typbibliotheken) oder guid einer beliebigen Typbibliothek; major und minor die Version.
tablesOrdnerkeiner*.sql-Dateien, ausgeführt in der Reihenfolge ihrer Namen; Anweisungen getrennt durch eine Zeile, die nur ; enthält (CREATE TABLE, CREATE INDEX, INSERT in Access-SQL). Zeilen, die mit -- beginnen, werden ausgelassen; Access-SQL kennt keine Kommentare, daher wird -- hinter einer Anweisung in derselben Zeile abgelehnt (Fehler 3078).
modulesOrdnerkeiner*.bas und *.cls, wie der VBA-Editor sie exportiert (UTF-8), auch in Unterordnern; der Modulname ist der Dateiname.
macrosOrdnerkeiner*.txt-Makros, wie SaveAsText sie schreibt; der Makroname ist der Dateiname.
themeObjektkeinesfolder mit den Bestandteilen eines Office-Designs (entpackte .thmx), name der Name des Designs.
ribbonsOrdnerkeiner*.xml-Menübanddefinitionen (UTF-8); der Name des Menübands ist der Dateiname.
ribbonModelDateikeineDas Modell des Menüband-Designers (JSON, UTF-8; ab 1.49): geprüft, seine Menübänder neben denen aus ribbons in USysRibbons geschrieben, das Modell in USysWklRibbon, CustomRibbonID auf sein Anwendungsmenüband gesetzt und das Rückrufmodul basWklRibbon erzeugt. Ab 1.53 werden seine Kontextmenüzuordnungen in die Formulare und Berichte geschrieben, nachdem diese geladen sind (Kontextmenüleiste des Objekts oder Steuerelements); eine Zuordnung, die ein Formular oder einen Bericht nennt, den der Build nicht anlegt, hält den Build an, ein Steuerelementname, den das Formular nicht hat, wird ignoriert. Erfordert WKL Forms Object Library 1.49, registriert auf dem Build-Rechner (1.53 für Zuordnungen).
appModelDateikeineDas Modell des WKL Application Designers (JSON, UTF-8; ab 1.51; Schlüssel: app-model.json): Titel, Symbol, Startformular, Menüband und die Benutzeroberfläche jeder Betriebsart. Geprüft, in USysWklApp gespeichert und nach properties für die Entwicklung angewendet; eine Starteigenschaft, die in beiden genannt ist, kommt aus dem Modell, mit einer Warnung. Sein icon ist eine Datei neben dem Modell, die in der Datenbank gespeichert wird. Erfordert WKL Forms Object Library 1.51, registriert auf dem Build-Rechner.
navPaneModelDateikeineDas Modell des Designers für den Navigationsbereich (JSON, UTF-8; ab 1.50; Schlüssel: navpane.json): in USysWklNavPane gespeichert und angewendet, nachdem Formulare und Berichte existieren – die eigene Kategorie des Navigationsbereichs von Access mit ihren Gruppen und Verknüpfungen, geschrieben für die Umgebung des Builds. Ein Eintrag, dessen Objekt die Datenbank nicht hat, hält den Build an. Erfordert WKL Forms Object Library 1.50, registriert auf dem Build-Rechner.
queriesOrdnerkeiner<name>.query.txt, wie SaveAsText sie schreibt.
formsOrdnerkeiner<name>.form.txt, wie SaveAsText sie schreibt, UTF-16 oder UTF-8.
reportsOrdnerkeiner<name>.report.txt, wie SaveAsText sie schreibt.
controlBlocksOrdnercontrol-blocks des Release-Pakets (im Repository docs/control-blocks)Steuerelementbausteine <Kind>.control.txt für Platzhalter-Rechtecke.
propertiesObjektkeinesDatenbankeigenschaften: true/false werden zu Ja/Nein-Eigenschaften, ganze Zahlen zu Long, alles andere zu Text (AppTitle, StartUpForm, CustomRibbonID, StartUpShowDBWindow, AllowBypassKey …).
finishTextkeinerName einer öffentlichen Funktion eines Standardmoduls aus modules, die der Build nach den Eigenschaften, vor dem letzten Kompilieren und der ACCDE, in derselben Access-Sitzung ausführt (ab 1.45.1). Für Schritte, die das Werkzeug nicht kennt: Gruppen des Navigationsbereichs, ausgeblendete Objekte, ein zuletzt gesetztes Startformular. Sie gibt bei Erfolg "" oder "OK" zurück; jeder andere Text hält den Build mit diesem Text an. Nur der Funktionsname: Application.Run nimmt keinen Modulnamen an.
accdeJa/Neintruefalse baut nur die ACCDB.
deployObjektkeinesDie Auslieferung (ab 1.51; erfordert appModel): version (erforderlich, etwa 1.4.0), targets (Development, Administration, Production; Standardwert ["Production"]), folder (Standardwert deploy). Jedes Ziel erhält einen Ordner <folder>\<Ziel in Kleinbuchstaben> (zum Beispiel deploy\production) mit einer Kopie der ACCDB (Entwicklung) oder der ACCDE, den Starteigenschaften seiner Betriebsart, `app-manifest.json` und ab 1.55 INSTALL.txt mit den Schritten, die Access auf einem PC der Kopie vertrauen lassen (Englisch und Deutsch). -Target des Skripts baut nur ein Ziel.

Ein Eintrag, den das Skript nicht kennt, wird mit der Liste der bekannten Einträge abgelehnt; so lässt ein vertippter Name nicht unbemerkt einen Teil der Anwendung aus.

Hinweise

  • Reihenfolge des Builds: Verweise, Tabellen, Module und Makros, Kompilieren, Design (eingebettet, Datenbank erneut geöffnet, geprüft), Menübänder, Menübandmodell, Abfragen, Formulare, Berichte, Modell des Navigationsbereichs, Eigenschaften, Anwendungsmodell, die Funktion finish, Kompilieren, ACCDE, Auslieferung. Formulare kommen nach dem Design, weil Access ein eingebettetes Design nur auf Formulare anwendet, die nach dem erneuten Öffnen der Datenbank angelegt werden.
  • Welche Version ein Verweis aufzeichnet: major und minor sind die niedrigste Version, die der Build verlangt, nicht die, die die Datenbank behält. Access zeichnet die höchste Version dieser Typbibliothek mit derselben Hauptversion auf, die auf dem Build-Rechner registriert ist: Ist Release 2.3 registriert, ergibt { "library": "WklForms", "major": 2, "minor": 0 } in ACCDB und ACCDE einen Verweis auf 2.3. Ein niedrigeres minor lässt die ACCDE deshalb nicht auf PCs mit einem älteren Release laufen; was eine gegen ein neueres Release gebaute ACCDE auf einem solchen PC tut, beschreibt „Reihenfolge eines Updates“ in Anwendung mit WKL-Steuerelementen auf Benutzer-PCs verteilen. Damit eine Datenbank mit einem älteren Release nutzbar bleibt, bauen Sie sie auf einem Rechner, auf dem dieses Release registriert ist. Der Build schreibt die aufgezeichnete Version in requires von app-manifest.json und warnt, wenn sie über major.minor liegt.
  • Platzhalter für WKL-Steuerelemente: Ein Rechteck in einem Formular, dessen Marke (Tag) wkl:<Kind> lautet – wkl:Grid, wkl:TreeList, wkl:ToggleSwitch … wie die Dateinamen in docs/control-blocks –, wird durch dieses Steuerelement mit Name, Lage und Größe des Rechtecks ersetzt, und mit seiner Verankerung (HorizontalAnchor, VerticalAnchor), wenn das Rechteck eine hat. Nur für Formulare nötig, die ein Skript anlegt; ein in Access bearbeitetes und mit SaveAsText gespeichertes Formular enthält seine WKL-Steuerelemente bereits.
  • Die Abschlussfunktion muss ihre Fehler behandeln. Ein Fehler, den sie nicht behandelt, öffnet den Laufzeitfehlerdialog von VBA, den das ausgeblendete Access nie anzeigt: Der Build endet dann am Zeitlimit (-TimeoutSeconds). Fangen Sie Fehler ab und geben Sie sie als Text zurück.
  • Das VBA-Projekt muss sich kompilieren lassen. Der Build hält an, wenn das nicht gelingt (IsCompiled), und nennt den Schritt; ein Kompilierfehler, der auf einen Dialog wartet, endet am Zeitlimit.
  • Menübandmodell und Export: Export-AccessApp schreibt das Modell Byte für Byte in die Datei ribbonModel zurück (die Datenbank behält seinen kanonischen Text) und lässt aus, was dem Modell gehört: Das Modul basWklRibbon und die Menübänder des Modells in USysRibbons werden nicht als Dateien geschrieben. Ein von Hand bearbeitetes Modell kommt nach dem ersten Build und Export in der kanonischen Form zurück. Die Kontextmenüzuordnungen bleiben im Modell; die exportierten Formular- und Berichtstexte tragen die ShortcutMenuBar, die der Build geschrieben hat, sodass ein zweiter Build nichts Neues schreibt.
  • Modell des Navigationsbereichs und Export: Export-AccessApp schreibt das Modell Byte für Byte in die Datei navPaneModel zurück; die eigenen Tabellen des Navigationsbereichs von Access werden nicht exportiert. Gruppen und Einträge mit Bedingungen werden für den Build-Rechner geschrieben (eine ACCDB); eine Anwendung, deren Navigationsbereich sich je Umgebung unterscheidet, ruft beim Start WklNavPane.Apply auf.
  • Auslieferung ohne Öffnen der Anwendung: Die Starteigenschaften eines Ziels werden mit DAO in seine Kopie geschrieben; die Kopie wird nie geöffnet, ihr Startformular läuft während des Builds also nicht. Die Eigenschaften wirken, wenn die Kopie das erste Mal geöffnet wird (Access liest die meisten erst beim Öffnen). AppIcon wird aus der Kopie entfernt – es würde eine Datei des Build-Rechners nennen – und von WklApplication.EnsureApplication beim ersten Start geschrieben; das Symbol wirkt sofort.
  • Was deploy nicht tut: Es installiert nichts, registriert nichts und setzt keinen vertrauenswürdigen Speicherort. Der Ordner ist das, was ein Bootstrapper oder ein Administrator auf dem Computer des Benutzers ablegt.
  • Anwendungsmodell und Export: Export-AccessApp schreibt das Modell Byte für Byte in die Datei appModel zurück und das gespeicherte Symbol als Datei daneben.
  • Vorlage und Export: Export-AccessApp schreibt kein Objekt der Vorlage in die Anwendung, es sei denn, die Anwendung hat bereits eine Datei dieses Namens (die das Objekt der Vorlage ersetzt). Um ein Objekt der Vorlage für eine einzelne Anwendung zu ändern, legen Sie zuerst eine gleichnamige Datei in den Ordner der Anwendung.
  • Textcodierungen: Module und Menübänder UTF-8; Formulare, Berichte, Abfragen und Makros so, wie SaveAsText sie schreibt (UTF-16), Formulare auch UTF-8 mit Bytereihenfolgemarke.

Codebeispiel

Ein Projekt mit einem Anwendungsrahmen und einer Seite, WKL Forms Object Library 1.38 und einem eigenen Menüband:

{
  "name": "Kunden",
  "references": [ { "library": "WklForms", "major": 2, "minor": 0 } ],
  "tables": "src/tables",
  "modules": "src/modules",
  "ribbons": "src/ribbons",
  "forms": "src/forms",
  "properties": { "AppTitle": "Kunden", "StartUpForm": "frmShell", "CustomRibbonID": "AppRibbon" }
}

Vererbung

Keine

de/wiki/msaccess/comctl/reference/access-app-json.txt · Zuletzt geändert: von Wolfgang van der Stille