WKL Bootstrapper: namestitev in zagon aplikacij Access brez skrbniških pravic
WKL Bootstrapper vsakemu uporabniku prinese novo izdajo aplikacije, ne da bi uporabnik potreboval skrbniške pravice in ne da bi moral kdo obiskati vsak računalnik. Uporabnik zažene eno datoteko EXE. Ta v njegov profil namesti različico, ki jo je izdal založnik, zanj registrira vse, kar različica potrebuje, in jo zažene. Namenjen je aplikacijam Access, zgrajenim s komponentami knjižnice WKL Forms Object Library, na enak način pa zažene tudi kateri koli drug program ali dokument.
Izdelek se imenuje Bootstrapper, njegov program je Wkl.Bootstrapper.exe, dokumentacija pa ga na kratko
imenuje zaganjalnik (Starter), ker uporabnik vidi prav to: zaganja aplikacijo.
Do izdaje 2.3.1 se je izdelek imenoval WKL Access Bootstrapper, do izdaje 2.4.1 pa se je njegov program imenoval
Wkl.Access.Bootstrapper.exe. Mapa, v kateri je program še pod tem imenom, deluje naprej: če zaganjalnik ni
naveden, se uporabi Wkl.Bootstrapper.exe, če ga ni, pa program s prejšnjim imenom.
Podprta konfiguracija: Windows 11 z 32- ali 64-bitnim programom Microsoft Access (Microsoft 365). Windows 10 in računalniki, ki programe v uporabnikovem profilu omejujejo z AppLockerjem ali s funkcijo Windows Defender Application Control, v tej različici niso podprti. Česa zaganjalnik sploh ne počne, opisuje razdelek Omejitve.
Stanje brez zaganjalnika
Aplikacija Access, s katero dela uporabnik, je datoteka front-end: podatkovna zbirka z obrazci, poročili in kodo, ki dostopa do podatkov v skupni zaledni podatkovni zbirki. Vsak uporabnik dela s svojo kopijo. Microsoft priporoča razdeljeno podatkovno zbirko, v kateri vsak uporabnik dostopa do podatkov prek lokalne kopije datoteke front-end: po omrežju se tako prenašajo le podatki, poškodba datoteke pa običajno prizadene samo kopijo, ki jo je imel uporabnik odprto (Microsoft: razdelitev podatkovne zbirke Access).
Kopija sama pa še ni vse, kar aplikacija potrebuje. Ob vsaki izdaji je treba:
- zamenjati kopijo pri vsakem uporabniku, čeprav jo imajo nekateri še odprto;
- registrirati komponente knjižnice WKL Forms Object Library (ali druge komponente ActiveX in COM) v isti 32- ali 64-bitni različici, kot jo ima nameščeni Office;
- mapo nastaviti kot zaupanja vredno mesto, sicer Access kode ne izvaja;
- zagotoviti gonilnike ODBC, vire podatkov in izvajalno okolje .NET.
Ročno to pomeni obisk pri vsakem računalniku, običajno s skrbniškimi pravicami. Pomanjkljive izdaje ni mogoče preprosto umakniti, pozneje pa nihče ne ve, kaj je bilo kje nameščeno.
Zakaj običajne tehnologije za uvajanje tega ne pokrijejo
| Tehnologija | Kaj pokrije | Zakaj tu ne zadošča |
|---|---|---|
| Windows Installer (MSI) | Popolno namestitev s popravilom in odstranitvijo | Microsoft navaja, da uvajanje z Windows Installerjem zahteva skrbniška dovoljenja in le omejeno dopušča namestitev s strani uporabnika (ClickOnce deployment and security); vsaka izdaja je nov paket, ki ga mora uvesti oddelek IT |
| ClickOnce | Namestitev za posameznega uporabnika brez skrbniških pravic, posodobitve iz skupne rabe ali s spletnega strežnika | Objavlja aplikacije Windows Presentation Foundation in Windows Forms, konzolne aplikacije in rešitve za Office (ista stran); aplikacija Access ni nič od tega |
| Web Platform Installer | Nameščanje izdelkov iz kataloga v spletnem viru | Opuščen: posodobitve izdelkov so se končale 1. julija 2022, spletni vir pa je bil odstranjen 31. decembra 2022 (ekipa IIS) |
| Skripti za kopiranje ob prijavi | Kopiranje datoteke front-end | Brez registracije za 32- in 64-bitni Office, brez zaupanja vrednega mesta, brez vrnitve na prejšnje stanje, brez zapisa o tem, kaj je bilo nameščeno |
Kaj se spremeni z zaganjalnikom
Zaganjalnik združuje model ClickOnce (za posameznega uporabnika, brez skrbniških pravic, posodobitve iz založnikovega vira) s temeljitostjo Windows Installerja (zapis vsake datoteke in vsake vrednosti v registru, štetje uporab skupnih komponent, povrnitev ob napaki, odstranitev v Aplikacijah). Oddelek IT enkrat namesti samo zaganjalnik; vsaka poznejša izdaja pride do uporabnikov prek njega.
| Položaj | Z zaganjalnikom |
|---|---|
| Nova izdaja aplikacije za 200 uporabnikov | Založnik izdajo shrani v izvorno mapo; vsak uporabnik jo dobi ob naslednjem zagonu. Različica, ki je v uporabi, se nikoli ne prepiše, saj ima vsaka različica svojo mapo. |
| Aplikacija uporablja komponente knjižnice WKL Forms Object Library | Komponente se namestijo in registrirajo za uporabnika, v isti 32- ali 64-bitni različici, kot jo ima Office; različice, ki jih uporabljajo druge aplikacije, ostanejo. |
| Aplikacija potrebuje gonilnik ODBC, vir podatkov ali izvajalno okolje .NET | Ti deli se namestijo za uporabnika brez skrbniških pravic, njihova uporaba pa se šteje, zato si jih lahko deli več aplikacij. |
| Namestitev se prekine na pol poti | Vsak korak se razveljavi; namestitev, ki jo je prekinil izklop računalnika, se povrne ob naslednjem zagonu. |
| Izdaja je pomanjkljiva | Prejšnja izdaja ostane nameščena in jo je mogoče zagnati iz okna z nastavitvami. |
| Uporabnikova kopija je poškodovana | /repair jo obnovi iz nameščene izdaje. |
| Skupna raba ni dosegljiva | Zažene se nameščena različica; posodobitev počaka na naslednji zagon. |
| Nameščati se smejo samo izdaje založnika | Če projektna datoteka vsebuje založnikov ključ za izdaje, zaganjalnik zavrne vsako izdajo brez veljavnega podpisa. |
| Aplikacijo je treba odstraniti | Prikazana je v Nastavitvah sistema Windows › Aplikacije, kjer jo lahko odstranite, ali pa jo odstranite z ukazom /uninstall; skupni deli ostanejo, dokler jih uporablja druga aplikacija. |
Kako deluje
graph TD
U["Uporabnik zažene Wkl.Bootstrapper.exe"] --> P["Branje projektne datoteke (bootstrapper.json ali datoteka, ki jo navaja /RUNCFG)"]
P --> S["Razrešitev glede na vir (datoteke, različica, register, cilj zagona)"]
S -- "vir ni dosegljiv ali izdaja ni zaupanja vredna" --> I["Zagon nameščene različice"]
S --> C["Preverjanje pogojev (Access, .NET, ODBC, datoteke, register, programi)"]
C -- "niso izpolnjeni" --> E["Okno z napako, kodo in diagnostiko"]
C --> T
subgraph TX["Ena transakcija"]
T["Namestitev različice: datoteke, komponente, gonilniki, register, vrste datotek, bližnjice, INI, zaupanja vredno mesto, vnos v Aplikacijah, dejanja afterInstall"]
J[("installer.db - dnevnik vsakega koraka")]
T -- "zabeleži vsak korak" --> J
end
T -- "korak ne uspe" --> R["Razveljavitev vseh korakov v obratnem vrstnem redu"]
T --> K["Odstranitev različic nad keepVersions"]
K --> G["Zagon cilja (program, dokument prek vrste datoteke ali Access s podatkovno zbirko)"]- Projektna datoteka (
bootstrapper.jsonpoleg datoteke EXE ali druga datoteka.jsonv isti mapi, ki jo navedete z/RUNCFG <file>): kaj zaganjalnik namesti in zažene – datoteke, vrednosti v registru, bližnjice, vrste datotek, datoteko INI, dejanja, pogoje in cilj zagona. Specifikacija: Projektna datoteka (format 2). - Vir (izdaja): mapa ali skupna raba, v katero založnik shranjuje izdaje. Zaganjalnik iz nje samo bere in vanjo nikoli ne piše.
- Različica: vsaka izdana različica dobi v uporabnikovem profilu svojo mapo; datoteke v njej se zapišejo enkrat in se nikoli ne zamenjajo.
- Skupne komponente: komponente knjižnice WKL Forms Object Library, gonilniki ODBC, zasebno izvajalno okolje .NET in drugi deli zunaj mape različice se hranijo ločeno po svojih različicah, njihova uporaba pa se šteje po različicah izdelkov; ostanejo, dokler jih potrebuje kateri koli uporabnikov izdelek.
- Podatkovna zbirka namestitvenega programa (
%LOCALAPPDATA%\WKL\Installer\installer.db, ena na uporabnika): zapis vsakega izdelka, različice, komponente in sredstva ter dnevnik namestitve, ki je v teku. - Kode: vsak zagon se konča s kodo – 0 zagnano; 1x konfiguracija, 2x Access, 3x predpogoji, 4x namestitev, 5x zaupanje, 6x zagon. Ista številka se pojavi v oknu z napako, v diagnostiki in kot izhodna koda.
Vse se zapiše v uporabnikove mape in pod HKEY_CURRENT_USER; zaganjalnik nikoli ne zahteva povišanih pravic.
Podrobnosti: Namestitveni program.
Kje začeti
Zaganjalnik ima tri vrste bralcev in vsaka ima svojo pot.
Založnik: izdaja aplikacije
Aplikacijo razvijate in jo želite spraviti na računalnike uporabnikov.
- Projektno datoteko napišite iz predlog: Ustvarjanje projekta iz predlog.
- Določite, kaj naj zaganjalnik namesti in zažene: aplikacijo Access po navodilih Razdeljevanje aplikacije uporabnikom z zaganjalnikom, kateri koli drug program pa po navodilih Zagon poljubnega programa z zaganjalnikom.
- Datoteko preverite z ukazom
Wkl.Bootstrapper.exe /check <file>in jo preizkusite z ukazom/whatif <file>, ki poroča o vsakem preverjanju in o tem, kaj bi zagon namestil, ne da bi karkoli spremenil.
Projektno datoteko lahko urejate tudi v programu WKL Bootstrapper Manager, ločeni aplikaciji Access, ki izvaja enaka preverjanja in zgradi paket MSI; opisuje ga uporabniški priročnik v dokumentaciji programa WKL Bootstrapper Manager.
Oddelek IT: enkratna namestitev zaganjalnika
Upravljate računalnike in odločate, kaj se sme namestiti. Zaganjalnik za nobeno izdajo ne potrebuje skrbniških pravic. Enkrat se namesti samo zaganjalnik, in sicer kot paket Windows Installer, zgrajen iz projektne datoteke: Uvajanje zaganjalnika s paketom MSI. Kaj zaganjalnik zapiše v računalnik, navaja stran Namestitveni program.
Skrbnik aplikacije: nemoteno delovanje
Za eno aplikacijo skrbite v imenu njenih uporabnikov.
/settingsodpre okno z nastavitvami: ali je aplikacijo mogoče zagnati, nameščene različice (zagon prejšnje, ponovno kopiranje, odstranitev starih), registracija komponent, diagnostika, dnevnik in vnosi projektne datoteke, ki jih sme spreminjati skrbnik aplikacije./diagnose(/diagnose /json) poroča, kaj bi zagon našel, ne da bi karkoli spremenil;/list(/list /json) prikaže nameščene različice in komponente s številom njihovih uporabnikov./repairnamesti, kar manjka, ne da bi aplikacijo zagnal;/uninstallodstrani izdelek.- Dnevnik je v
%LOCALAPPDATA%\WKL\<product>\Logs\bootstrapper.log. - Neuspel zagon prikaže kodo; na strani Kode napak zaganjalnika ima vsaka koda svojo stran z vzrokom in rešitvijo.
Vsi ukazi in izhodne kode: Namestitveni program.
Omejitve
- Zaganjalnik ne namesti ničesar, kar zahteva skrbniške pravice: nobenih gonilnikov za ves sistem, nobenega okolja Access Runtime, nobenih registracij za ves računalnik. To so predpogoji, za katere poskrbi oddelek IT; zaganjalnik jih preveri in manjkajoče sporoči z ustrezno kodo.
- Aplikacije ne gradi; aplikacija Access se gradi z WKL Office SDK.
- Dva zaganjalnika istega uporabnika sistema Windows, ki nameščata hkrati, se med seboj ne uskladita; zaženite ju enega za drugim.
- Vir prek protokola HTTP ali HTTPS ni podprt; vir je mapa ali skupna raba.
- Podpis izdaje ne zajema programov, ki jih zaganjajo
actions; kaj vse podpis ne zajema, opisuje razdelek Podpisane izdaje. - Več v razdelku Omejitve namestitvenega programa.
Prehod s prejšnjega zaganjalnika
Pomembno samo, če uporabnike že oskrbuje prejšnji zaganjalnik.
- StarterPro, predhodnik tega zaganjalnika s konfiguracijo
StarterPro.config.xml:/import-starterprokonfiguracijo pretvori v projektno datoteko. Glejte Prehod s prejšnjega zaganjalnika. - Zaganjalnik 1.0 (projektne datoteke formata 1): te datoteke še vedno bere in zaganja. Različica 2.x prevzame, kar je namestila različica 1.0, in to pozneje odstrani kot svoje dele (Prevzem zaganjalnika 1.0). Za izdaje, ki še delujejo po načinu 1.0: Kaj zaganjalnik zapiše in sporoči in Odstranitev aplikacije iz računalnika.
Sorodne teme
- Projektna datoteka (format 2) – vsi vnosi, ograde, dejanja in pogoji
- Namestitveni program – transakcija, štetje, pravilo različic, ukazi, podatkovna zbirka namestitvenega programa
- Varnost in obveznosti proizvajalca – prijava ranljivosti, obveznosti po aktu o kibernetski odpornosti in do subjektov NIS 2, pot do skladnosti
tools\Export-ComRegistration.ps1v mapi paketa različice na založnikovem računalniku zajame registracijo strežnika COM kotregistration.json; zaganjalnik jo zapiše za uporabnika, namesto da bi zagnal strežnikovo lastno registracijo.