Uvajanje aplikacije s kontrolniki WKL v računalnike uporabnikov
Aplikacijo Access (ACCDB ali ACCDE, polni Access ali Access Runtime), ki uporablja kontrolnike WKL, prenesite na računalnike njenih uporabnikov.
Zahteva katero koli izdajo WKL Forms Object Library; primeri za mapo izdaje uporabljajo <version>.
Pregled rešitve
Vsak uporabniški računalnik potrebuje štiri stvari, v tem vrstnem redu:
- .NET 10 Desktop Runtime v bitni različici Officea (ali okolja Access Runtime).
- Datoteke izdaje v tej bitni različici, v lokalni mapi, ki ostane.
- Registracijo datoteke
Wkl.Forms.ObjectLibrary.dllza vsakega uporabnika sistema Windows, ki zažene aplikacijo. - Samo aplikacijo, zgrajeno z isto izdajo, na zaupanja vrednem mestu.
Spodnji skript izvede koraka 2 in 3; korak 1 je Microsoftov namestitveni program, korak 4 pa vaša lastna distribucija sprednjega dela. Brez skripta koraka 2 in 3 opravi zaganjalnik iz paketa (glejte Opombe).
Izvedba
Kontrolni seznam za vsak računalnik:
| Korak | Kaj | Preverjanje |
|---|---|---|
| 1 | Ugotovite bitno različico Officea ali okolja Access Runtime | Datoteka › Račun › Vizitka programa Access; za Runtime: mapa Program Files (x86) (32-bitno) ali Program Files (64-bitno), v kateri je MSACCESS.EXE |
| 2 | Namestite .NET 10 Desktop Runtime te bitne različice | https://dotnet.microsoft.com/download/dotnet/10.0, stolpec „Desktop Runtime“ |
| 3 | Kopirajte mapo izdaje x86 ali x64 | Vse datoteke v eno lokalno mapo, na primer %LOCALAPPDATA%\WKL\Access Components\<version>\x86 |
| 4 | Registrirajte za uporabnika sistema Windows | regsvr32 /n /i:user, enkrat za vsakega uporabnika sistema Windows na računalniku |
| 5 | Sprednji del postavite na zaupanja vredno mesto | tools\deploy\Set-AccessTrustedLocation.ps1 iz paketa izdaje (spodaj), Datoteka › Možnosti › Središče zaupanja › Zaupanja vredna mesta ali mesto, ki ga vaš oddelek IT nastavi s pravilnikom |
| 6 | Zaženite aplikacijo | Obrazci s kontrolniki WKL se odprejo brez sporočila |
Skript za koraka 3 in 4 (PowerShell, zažene ga vsak uporabnik; brez skrbniških pravic). $Source nastavite na
mapo izdaje v vaši omrežni skupni rabi, $Bitness pa za 32-bitni Office na x86:
$Version = '1.59' # the release folder (<version>) $Bitness = 'x86' # 'x64' for 64-bit Office $Source = "\\server\share\WKL Forms Object Library\$Version\$Bitness" $Target = Join-Path $env:LOCALAPPDATA "WKL\Access Components\$Version\$Bitness" # Only the Access of this session: on a terminal server other users' Access processes are visible too. $session = (Get-Process -Id $PID).SessionId Get-Process MSACCESS -ErrorAction SilentlyContinue | Where-Object SessionId -eq $session | ForEach-Object { throw 'Close Access first: it keeps a loaded DLL until it exits.' } New-Item -ItemType Directory -Force $Target | Out-Null Copy-Item (Join-Path $Source '*') $Target -Force $regsvr32 = if ($Bitness -eq 'x86') { "$env:windir\SysWOW64\regsvr32.exe" } else { "$env:windir\System32\regsvr32.exe" } $process = Start-Process $regsvr32 -ArgumentList '/s', '/n', '/i:user', "`"$Target\Wkl.Forms.ObjectLibrary.dll`"" -Wait -PassThru if ($process.ExitCode -ne 0) { throw "regsvr32 failed with exit code $($process.ExitCode)." } 'WKL Forms Object Library registered.'
Zaženite ga iz prijavnega skripta ali orodja za distribucijo programske opreme v kontekstu uporabnika, ne kot drug uporabnik: registracija pristane v registru uporabnika, ki skript zažene.
Skript za korak 5, v istem kontekstu: Set-AccessTrustedLocation.ps1 zapiše vnos, ki ga zapiše pogovorno okno
središča zaupanja (za posameznega uporabnika sistema Windows, brez skrbniških pravic), z -Remove pa ga znova
odstrani:
$Front = Join-Path $env:LOCALAPPDATA 'Contoso\Orders' # the folder of the front end & "\\server\share\WKL Forms Object Library\$Version\tools\deploy\Set-AccessTrustedLocation.ps1" -Path $Front
Mapa v omrežni skupni rabi potrebuje še -AllowNetworkLocations, ki dovoli zaupanja vredna mesta v omrežju za vse
uporabnikove vnose; lokalna mapa za sprednji del se temu izogne. Mesta, nastavljena s pravilnikom, imajo
prednost: če je skrbnik zaupanja vredna mesta izklopil, skript opozori, da njegov vnos nima učinka.
Opombe
- Brez skripta: zaganjalnik. Paket vsebuje
bootstrapper\Wkl.Bootstrapper.exe, zaganjalnik (Starter), ki te korake ob zagonu aplikacije izvede za vsakega uporabnika – različico kopira v uporabnikov profil, komponente WKL registrira za uporabnika, mapo nastavi kot zaupanja vredno mesto in zažene Access, brez skrbniških pravic. Glejte Razdeljevanje aplikacije uporabnikom z zaganjalnikom. Od izdaje 1.56.2 paket vsebuje zaganjalnik 2.0, poleg vsake DLL pa šeregistration.json(registracija za posameznega uporabnika kot podatki): zaganjalnik 2.0 te ključe zapiše in odstrani sam, namesto da bi klicalregsvr32, in izdajo ohrani registrirano, dokler jo nameščena aplikacija še potrebuje. - ACCDE za vsako izdajo. ACCDE zgradite iz ACCDB, ko je registrirana izdaja, ki jo dobijo uporabniki. Podatkovna zbirka, zgrajena s starejšo izdajo, se odpre z novejšo registracijo (Access sklic razreši ob odpiranju podatkovne zbirke); ACCDE na uporabnikovem računalniku ni mogoče znova prevesti, zato zgradite novo ACCDE vsakič, ko uporabite člane novejše izdaje.
- Vrstni red posodobitve: najprej komponente, nato podatkovna zbirka. ACCDE, zgrajena ob registrirani eni izdaji, deluje ob registrirani novejši izdaji (sklic takrat kaže na novejšo datoteko in je nepoškodovan). Obratno ni podprto: ACCDE, zgrajena ob registrirani novejši izdaji in odprta na računalniku, ki ima še starejšo, ima lahko poškodovan sklic (
TYPE_E_LIBNOTREGISTERED), obrazec z dogodki kontrolnika WKL pa ne uspe z napako 459. Na računalniku sredi posodobitve nove komponente s staro podatkovno zbirko delujejo, nova podatkovna zbirka s starimi komponentami pa ne. Komponente uvedite pred podatkovno zbirko, ki je zgrajena z njimi. - Access Runtime. Kontrolniki v okolju Access Runtime delujejo enako kot v polnem Accessu. Runtime nima dodatkov: menijski vnos oblikovalnika upravitelja povezav (Orodja zbirke podatkov › Dodatki) je le orodje za razvijalca; aplikacije
WklLinkManagerkličejo iz lastne kode. - Več uporabnikov sistema Windows na enem računalniku (terminalski strežnik, skupni računalniki): vsak uporabnik skript zažene enkrat. Registracija za vse uporabnike računalnika (
regsvr32kot skrbnik brez/n /i:user) v tej izdaji ni podprta. - Zaupanja vredno mesto. VBA aplikacije se izvaja samo na zaupanja vrednem mestu ali v zaupanja vredni podatkovni zbirki. Zunaj njega Access vpraša z varnostnim obvestilom (privzeta nastavitev makrov, ACCDE) ali kodo brez besede izklopi (strožje nastavitve, ACCDB v polni različici) – glejte Aplikacija se odpre, njena koda pa se ne izvaja. Mesto zajame podmape samo z
-AllowSubfolders;Test-AccessTrust.ps1iz paketa preveri računalnik pred prvim zagonom. Nastavitev ActiveX Onemogoči vse kontrolnike brez obvestila ustavi kontrolnike WKL tudi na zaupanja vrednem mestu (napaka Accessa 2926); druge možnosti ActiveX tega ne storijo – glejte zgornjo stran za odpravljanje težav. - Posodobitev. Za posodobitev na računalniku zaprite Access, zaženite skript z novo različico in zamenjajte sprednji del, zgrajen z njo. Mapo stare različice nato izbrišite.
- Bitna različica. Podprt je Access v 32- in 64-bitni različici.
Sorodne teme
- Namestitev izdanega paketa – isti koraki na razvijalskem računalniku, s seznamom datotek