Color scheme: Light
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Anwendung für die Produktion ausliefern

Anwendung für die Produktion ausliefern

Bauen Sie die Kopien, in denen eine Anwendung ausgeliefert wird – eine ACCDE für die Access Runtime, eine ACCDE für Administratoren –, jede bereits für ihre Betriebsart eingerichtet und mit einem Manifest, das ein Setupprogramm prüfen kann.

Voraussetzungen: WKL Forms Object Library 1.51 oder höher und das Build-Werkzeug des Release-Pakets (tools\build).

Lösungsüberblick

Das Build-Werkzeug baut die Anwendung aus ihren Textquellen (Access-Anwendung aus ihren Textquellen bauen). Zwei Einträge in access-app.json ergänzen die Auslieferung: appModel nennt das Modell des WKL Application Designers (Titel, Symbol, Startformular, Menüband, die Benutzeroberfläche jeder Betriebsart), deploy die Version und die Ziele. Für jedes Ziel kopiert das Werkzeug die ACCDB (Entwicklung) oder die ACCDE, schreibt die Starteigenschaften der Betriebsart des Ziels mit DAO in die Kopie – die Kopie wird nie geöffnet, ihr Startformular läuft während des Builds also nicht – und legt app-manifest.json und INSTALL.txt daneben. INSTALL.txt (Englisch und Deutsch) richtet sich an den Administrator des Kunden: den Ordner in einen lokalen Ordner des Benutzers kopieren (nie als E-Mail-Anlage oder heruntergeladenes Archiv), ihn mit tools\deploy\Set-AccessTrustedLocation.ps1 zu einem vertrauenswürdigen Speicherort machen und mit tools\deploy\Test-AccessTrust.ps1 prüfen.

Umsetzung

  1. Speichern Sie das Modell als Datei neben den Quellen, zum Beispiel mit dem Anwendungsdesigner und anschließend Export-AccessApp.ps1, das es zusammen mit der Symboldatei so schreibt, wie appModel es nennt.
  2. Nennen Sie Modell und Auslieferung in access-app.json:

    {
      "name": "Kunden",
      "references": [ { "library": "WklForms", "major": 2, "minor": 0 } ],
      "forms": "src/forms",
      "modules": "src/modules",
      "appModel": "src/app/app-model.json",
      "deploy": { "version": "1.4.0", "targets": ["Administration", "Production"] }
    }
  3. Bauen Sie: .\tools\build\Build-AccessApp.ps1 -Project .\access-app.json. Die Ausgabe nennt die ACCDB, die ACCDE und die ausgelieferten Dateien, zum Beispiel deploy\production\Kunden.accde. Mit -Target Production wird nur der Produktionsordner gebaut.
  4. Rufen Sie im Startformular EnsureApplication auf, damit sich eine Kopie, die in einer anderen Betriebsart geöffnet wird, selbst korrigiert (siehe Tutorial):

    Private Sub Form_Load()
        Dim findings As String
        findings = CreateObject("WklForms.Application").EnsureApplication()
        If Len(findings) > 0 Then Debug.Print findings
    End Sub
  5. Übergeben Sie deploy\production an das Setup, das die Anwendung auf die Computer der Benutzer bringt; es prüft die Datei anhand von sha256 aus app-manifest.json. Prüfen Sie die Kopie, bevor Access sie öffnet: Access schreibt beim Öffnen in eine ACCDE, auch mit /runtime, und danach stimmt die Prüfsumme nicht mehr. Die Prüfsumme zeigt eine beschädigte Kopie an, nicht die Herkunft der Datei: Das Manifest liegt neben der Datei und kann mit ihr ersetzt werden.

Hinweise

  • Nur an einem vertrauenswürdigen Speicherort. Die Starteigenschaften wirken nur, wenn Access die Datei mit vertrauenswürdigem Code öffnet. Mit einer strengeren Makroeinstellung öffnet Access eine ausgelieferte ACCDE außerhalb eines vertrauenswürdigen Speicherorts überhaupt nicht; dort schützen die Eigenschaften also weder, noch spielen sie eine Rolle (siehe Die Anwendung öffnet sich, aber ihr Code läuft nicht). Liefern Sie an einen vertrauenswürdigen Speicherort aus, und prüfen Sie einen PC mit tools\deploy\Test-AccessTrust.ps1.
  • Schon beim ersten Öffnen richtig. Die Starteigenschaften der Betriebsart stehen in der ausgelieferten Datei. Ohne deploy trägt eine aus der ACCDB erstellte ACCDE die Entwicklungseigenschaften, bis EnsureApplication einmal gelaufen ist und die Datenbank erneut geöffnet wurde.
  • Die ausgelieferte Kopie ohne Runtime prüfen. Die Starteigenschaften lassen sich aus der ausgelieferten Datei lesen, ohne sie in Access zu öffnen. So kann auch ein Rechner ohne Access Runtime feststellen, ob die Produktionskopie abgesichert ist. In einer 32-Bit-PowerShell mit DAO:

    $engine = New-Object -ComObject DAO.DBEngine.120
    $db = $engine.OpenDatabase("$PWD\deploy\production\Kunden.accde", $false, $true)
    foreach ($n in 'StartUpShowDBWindow', 'AllowFullMenus', 'AllowShortcutMenus', 'AllowSpecialKeys', 'AllowBypassKey') {
        try { '{0} = {1}' -f $n, $db.Properties.Item($n).Value } catch { "$n missing" }
    }
    $db.Close()

    Mit den Standardwerten der Produktion sind alle fünf False. Damit ist geklärt, ob die Auslieferung abgesichert ist; einen Start in der Runtime, der auch Startformular und Menüband zeigt, ersetzt das nicht.

  • Das Symbol wird in der Datenbank gespeichert. AppIcon wird aus der ausgelieferten Kopie entfernt – es würde eine Datei des Build-Rechners nennen –, und EnsureApplication schreibt das Symbol beim ersten Start als Datei auf den Computer des Benutzers; das Symbol wirkt sofort.
  • Eine ACCDE läuft nur in einem Access ihrer Bitversion; bitness im Manifest gibt an, in welchem. Eine Datenbank braucht das registrierte WKL-Release ihrer requires-Version oder ein neueres (Anwendung mit WKL-Steuerelementen auf Benutzer-PCs verteilen).
  • Was deploy nicht tut: Es installiert nichts, registriert nichts und richtet keinen vertrauenswürdigen Speicherort ein (tools\deploy\Set-AccessTrustedLocation.ps1).
  • Kein Schutz. Die gesperrten Optionen halten Benutzer davon ab, versehentlich in den Entwurf zu gelangen; schützen Sie die Daten mit den Rechten des Servers.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/deliver-an-application-for-production.txt · Last modified: by Wolfgang van der Stille