Private .NET-Runtime ausliefern
Auf den PCs der Benutzer ist keine .NET 10 Desktop Runtime installiert, und die IT installiert sie nicht; die Anwendung – zum Beispiel eine Access-Anwendung mit der WKL Forms Object Library – soll trotzdem laufen.
Voraussetzungen: WKL Bootstrapper 2.0 (Projektdatei im Format 2).
Lösungsüberblick
- Die Auslieferung bringt je Bitbreite eine .NET-Runtime in
dotnet\x86unddotnet\x64der Quelle mit. - Ein
files-Eintrag je Bitbreite kopiert sie nach[WklRoot]\Dotnet\<release>\<bitness>, also nach%LOCALAPPDATA%\WKL\Dotnet\<release>\<bitness>.<release>ist die Produktversion ihrerdotnet.exeohne Build-Kennung. start.environmentübergibt den Ordner an das gestartete Programm:DOTNET_ROOT(x86)für 32 Bit,DOTNET_ROOTfür 64 Bit. Der .NET-Host des Programms und der in Access geladenen WKL-Komponenten findet die Runtime dann dort.
Umsetzung
Befüllen Sie die Auslieferung. Kopieren Sie eine .NET-10-Runtime jeder Bitbreite in die Quelle: den Inhalt eines installierten .NET-Ordners (
%ProgramFiles(x86)%\dotnetfür 32 Bit,%ProgramFiles%\dotnetfür 64 Bit) –dotnet.exeund die Ordnerhostundshared– nachdotnet\x86unddotnet\x64:<delivery> app-manifest.json, Kunden.accde components\x86, components\x64 dotnet\x86\dotnet.exe, host\..., shared\... dotnet\x64\dotnet.exe, host\..., shared\...
Schreiben Sie die Projektdatei, oder lassen Sie sie von
/new-project ... /template access,components,dotnetschreiben. Die Einträge für die Runtime lauten:{ "files": [ { "id": "dotnet-x86", "source": "dotnet\\x86", "target": "[WklRoot]\\Dotnet\\[ItemVersion]\\x86", "bitness": "x86", "versionOf": "dotnet.exe" }, { "id": "dotnet-x64", "source": "dotnet\\x64", "target": "[WklRoot]\\Dotnet\\[ItemVersion]\\x64", "bitness": "x64", "versionOf": "dotnet.exe" } ], "start": { "environment": [ { "name": "DOTNET_ROOT(x86)", "value": "[Dir:dotnet-x86]", "bitness": "x86" }, { "name": "DOTNET_ROOT", "value": "[Dir:dotnet-x64]", "bitness": "x64" } ] } }Mit einer privaten Runtime braucht das Projekt keine Bedingung der Art
dotnet; entfernen Sie eine, die eine installierteMicrosoft.WindowsDesktop.App 10.0verlangt.- Prüfen und probieren Sie es aus:
Wkl.Bootstrapper.exe /check bootstrapper.json, dann/whatif bootstrapper.json.
Hinweise
- Installiert wird nur die Runtime der Bitbreite des Projekts (
bitnessdes Projekts; standardmäßig die von Microsoft Access und, wenn kein Access installiert ist, die von Windows). - Der Runtime-Ordner wird gemeinsam genutzt und gezählt: Jedes Produkt, das dasselbe Release ausliefert, verwendet eine Kopie, die bleibt, bis die letzte Produktversion, die sie verwendet, entfernt ist. Ein neueres Release kommt in einen eigenen Ordner daneben.
- Einschränkung: Die Variablen erreichen nur Programme, die der Starter startet. Access, das auf andere Weise geöffnet wird – aus der Datenbankdatei, aus dem Startmenü, per Automatisierung –, und Office-UserForms, die die WKL-Komponenten verwenden, finden die private Runtime nicht; sie brauchen eine für den Computer installierte Runtime.
- Die installierte Version behält die Variablen, sodass auch ein Start ohne Quelle sie setzt.
- Eine private Runtime wird für 32-Bit- und 64-Bit-Access unter 64-Bit-Windows unterstützt; 32-Bit-Windows wird nicht unterstützt.