Barvna shema: Temna
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Bootstrapper » Referenca » Kaj zaganjalnik zapiše in sporoči

Kaj zaganjalnik zapiše in sporoči

Ta stran opisuje način 1.0: datoteke formata 1, katerih komponente nimajo datoteke registration.json. Za namestitveni program 2.0 (format 2 ali komponente z registration.json), ki odregistrira in odstrani, kar je namestil, glejte Namestitveni program.

Opisuje, kaj Wkl.Bootstrapper.exe pusti v računalniku, kako se konča klic in kaj sporoči /diagnose. S temi podatki lahko pozneje preverite namestitev, odstranite aplikacijo (glejte Odstranitev aplikacije iz računalnika) ter na podlagi diagnostike pišete skripte ali zahtevke za podporo.

Kako se konča klic

Zaganjalnik ne čaka na Access. Preveri računalnik, po potrebi registrira komponente, nastavi zaupanja vredno mesto, namesti kopijo različice, zažene MSACCESS.EXE in dve sekundi spremlja novi proces. Nato se konča:

Izhodna kodaPomen
0Access se je zagnal z uporabnikovo kopijo in je dve sekundi pozneje še vedno tekel. To ne pomeni, da je aplikacija odprla svoj prvi obrazec: napaka v zagonski kodi aplikacije se prikaže v programu Access, ko se je zaganjalnik že končal.
60Programa Access ni bilo mogoče zagnati ali pa se je končal v teh dveh sekundah (zavrnjena datoteka, manjkajoč sklic, pravilnik).
katera koli drugaPrvi manjkajoči del, označen s svojo kodo; glejte Kode napak zaganjalnika. Zagnano ni bilo nič.

Izhodna koda je ista številka, ki jo prikaže okno z napako, in prva številka izpisa /diagnose. Brez stikala se zaganjalnik konča, ko uporabnik zapre okno z napako; z /quiet ne prikaže ničesar in se konča takoj. Med vsem tem je začetno okno prikazano kot pozdravno okno (start.splash.duration; pri vrednosti 0 se okno napredka prikaže samo, če namestitev kopije ali registracija traja dlje kot 0,8 sekunde).

Različice

Zaganjalnik vedno namesti in zažene različico, ki jo navaja app-manifest.json v viru. Brez deliveryKey te različice nikoli ne primerja s kopijami v profilu: tudi nižja različica kot prej se namesti in zažene – tako se izdaja vrne na prejšnjo različico. Z deliveryKey (od različice 2.2.4) se različica, nižja od kdaj koli nameščene, namesti samo, če podpisana izdaja umakne višjo; sicer se zažene nameščena različica (koda 52, glejte Podpisane izdaje).

Pravilo
Oblika versionDve do štiri števila, ločena s pikami, vsako z eno do petimi števkami: 1.4, 1.4.0, 0.1.123.4. Črke, pripone, kot je 0.1.0-demo, ter besedilo pred številko ali za njo zaganjalnik zavrne s kodo 11 (Nastavitev aplikacije ni mogoče prebrati); deploy.version orodja za gradnjo se zapiše kot ta vrednost.
Vrstni redŠtevilsko, del za delom: 0.1.10 je novejša od 0.1.9. V vseh različicah uporabljajte enako število delov: 1.4 in 1.4.0 sta različni različici, 1.4 pa velja za starejšo.
Ohranjene različiceNajnovejših keepVersions po tem vrstnem redu ter vedno različica, ki se zaganja, in lastWorkingVersion – različica, ki je bila zagnana nazadnje (ne nujno najvišja) in je po vsakem uspešnem zagonu zabeležena v State\provisioning.json. Mapa, katere kopija je odprta v programu Access (obstaja njena datoteka .laccdb), se nikoli ne odstrani.
Ista različica, druga datotekaNova zgoščena vrednost SHA-256 za različico, ki je že nameščena, šteje kot nova izdaja: kopija se znova namesti v isto mapo Frontends\<version>, vsebina uporabnikove kopije pa se zamenja. Dokler je ta kopija odprta v programu Access, stare mape ni mogoče umakniti: zagon se konča s kodo 41 (Aplikacije ni bilo mogoče kopirati v uporabniški profil), odprta kopija ostane nespremenjena, naslednji zagon po zaprtju programa Access pa namesti novo datoteko (Windows ne dovoli premakniti mape, v kateri je odprta datoteka). Temu se izognete tako, da vsaki gradnji dodelite svojo različico.

Mape v uporabnikovem profilu

Vse, kar pripada eni aplikaciji, je pod %LOCALAPPDATA%\WKL\<product>, pri čemer je <product> vrednost product v bootstrapper.json:

MapaVsebina
Frontends\<version>\Uporabnikova kopija vsake različice, z datoteko INI iz ini, če je nastavljena. Ostane najnovejših keepVersions različic, vedno pa tista, ki teče, in tista, ki se je nazadnje zagnala; različica, ki je v uporabi, se nikoli ne odstrani.
State\provisioning.jsonKaj je bilo nameščeno: version, file, sha256 in size izdaje, s katero je bila kopija primerjana, writeTicks, lastWorkingVersion.
State\news-seen.txtOd različice 3.3.0, samo z razširjenim pogledom: datum najnovejšega vnosa med novostmi, ki ga je pokazal razširjeni pogled.
State\last-start-failedOd različice 3.3.0, samo z display.mode auto: obstaja, če zadnji zagon ni uspel; uspešen zagon datoteko odstrani.
Logs\bootstrapper.logDnevnik (spodaj).

Komponente WKL, ki jih prinaša izdaja aplikacije, se za vsako različico ter za 32- in 64-bitno izvedbo enkrat kopirajo v %LOCALAPPDATA%\WKL\Components\<release>\<x86|x64>\ in se registrirajo od tam. To mapo si delijo vse uporabnikove aplikacije, ki izdajajo komponente.

Iz shrambe po vsebini (od različice 3.3.0) zaganjalnik vsebine datotek prenese v predpomnilnik %LOCALAPPDATA%\WKL\Store\: objects\<ab>\<sha256> za vsako vsebino datoteke in manifests\<product>\<version>.json za vsako nameščeno različico. Predpomnilnik si delijo vsi uporabnikovi izdelki; po vsaki namestitvi in ob odstranitvi z /uninstall zaganjalnik odstrani, česar ne navaja nobena nameščena različica več.

Zaganjalnik sejo brez trajne namestitve (session v projektni datoteki, od različice 3.3.0) zabeleži v %LOCALAPPDATA%\WKL\Sessions\<product>.json (izdelek, proces zaganjalnika in ali je seja izdelek namestila), datoteko pa izbriše, ko počisti; glejte Zagon aplikacije brez trajne namestitve.

Dnevnik

%LOCALAPPDATA%\WKL\<product>\Logs\bootstrapper.log, UTF-8, ena vrstica za vsak korak: čas, ID procesa, korak, besedilo. Pri velikosti 1 MB se datoteka preimenuje v bootstrapper.1.log (ohrani se pet starejših datotek). Dnevnik nikoli ne vsebuje vrednosti INI, gesel ali povezovalnih nizov. /diagnose ne piše v dnevnik.

KorakBesedilo
startizdelek in različica zaganjalnika
manifestizdelek, različica, datoteka, cilj, bitness in runtime iz app-manifest.json
environmentAccess, registracija WKL, .NET Desktop Runtime
componentspot do registrirane knjižnice DLL (samo če aplikacija potrebuje komponente WKL)
trustzaupanja vredna mapa
placementSamo način 1.0: placed <path>, če je bila kopija nameščena zdaj, in place <path>, če je bila uporabljena obstoječa kopija
installNamestitveni program 2.0: install <version> <copy> components <release> za vsako nameščeno različico (glejte Kdaj namešča 2.0 in kdaj teče 1.0)
endkoda, ime in podrobnost izida
settingsdejanja okna z nastavitvami: nastavitev komponent, zavrženje ali zagon različice, čiščenje

Dokaz namestitve (namestitveni program 2.0). Katere izdaje prevzame namestitveni program 2.0, navaja razdelek Kdaj namešča 2.0 in kdaj teče 1.0; zanje je dokaz vrstica dnevnika install <version> <copy> ... skupaj z izpisom /list /json (nameščene različice in njihove komponente iz podatkovne zbirke namestitvenega programa). State\provisioning.json se ne zapiše, vrstica placement pa se ne pojavi. Če preizkus namestitev odstrani ročno, ostaneta njen vnos v nastavitvah sistema Windows (Aplikacije) in njen zapis v podatkovni zbirki namestitvenega programa; zato jo odstranite z /uninstall /quiet.

Dokaz namestitve kopije (način 1.0). Kopija se preveri, preden se namesti: zaganjalnik izdajo kopira v začasno mapo, njeno velikost in zgoščeno vrednost SHA-256 primerja z app-manifest.json in šele nato mapo preimenuje v Frontends\<version>. Vrstica placed <path> torej pomeni, da je bila kopija v tistem trenutku enaka manifestu; ob razliki se zagon konča s kodo 42 in ne namesti ničesar. State\provisioning.json zabeleži sha256 in size manifesta za to namestitev. Velikost in zgoščena vrednost SHA-256 same kopije se ne beležita: Access datoteko ob odpiranju spremeni (tudi ACCDE, odprto z /runtime), zato se po prvem zagonu z manifestom tako ali tako ne bi ujemali.

Zaupanja vredno mesto

Zaganjalnik mapo Frontends za uporabnika nastavi kot zaupanja vredno mesto programa Access, skupaj s podmapami, zato se kopije odprejo brez varnostnega opozorila:

KljučHKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Access\Security\Trusted Locations\WKL.<product>
Path%LOCALAPPDATA%\WKL\<product>\Frontends\ (razširjeno, s končno poševnico nazaj)
AllowSubfolders1 (DWORD)
DescriptionWKL <product>: Anwendung des Benutzers (Wkl.Bootstrapper)

Zaganjalnik ga preveri ob vsakem zagonu in ga zapiše samo, če se Path ali AllowSubfolders razlikujeta; nikoli ga ne odstrani. Če pravilnik skupine zaupanja vredna mesta izklopi ali dovoli samo mesta iz pravilnika, se zagon konča s kodo

Registracija komponent

Če izdaja aplikacije prinaša komponente WKL (components v bootstrapper.json), uporabnikova registracija pa manjka ali je starejša, kot jo potrebuje aplikacija, zaganjalnik na kopiji v %LOCALAPPDATA%\WKL\Components\... zažene regsvr32 /s /n /i:user v isti 32- ali 64-bitni različici, kot jo ima Access. Ta ukaz zapiše iste ključe pod HKEY_CURRENT_USER\Software\Classes kot lastna registracija paketa različice. Dovolj nova registracija ostane nespremenjena, odregistracije pa zaganjalnik nikoli ne izvede. Prav tako ne zamenja registracije druge glavne različice iste knjižnice tipov, ki jo še potrebuje druga aplikacija; zagon se ustavi s kodo 37. Zaganjalnik registrira knjižnico DLL, ki jo navaja datoteka registration.json v mapi components (paketi pred izdajo 1.57 knjižnice WKL Forms Object Library te datoteke nimajo; pri njih je to Wkl.Access.Components.dll). Od različice WKL Bootstrapper 3.2 naprej obstoječo registracijo prepozna po identifikatorju LIBID knjižnice tipov in njeni različici (HKEY_CURRENT_USER\Software\Classes\TypeLib\{LIBID}), ne po imenih datotek ali identifikatorjih ProgID, zato nova izdaja knjižnice, tudi s preimenovanimi datotekami, ne potrebuje novega zaganjalnika. Knjižnice WKL Office JSON, na katero se nekatere aplikacije prav tako sklicujejo, zaganjalnik s projektno datoteko v formatu 1 ne namesti in ne preveri; projektna datoteka v formatu 2 jo registrira z vnosom registerCom. Katere ključe registracija zapiše in odstrani, opisuje dokumentacija izdelka WKL Forms Object Library (Kaj zapiše registracija za posameznega uporabnika).

/diagnose in /diagnose /json

/diagnose izvede vsa preverjanja zagona, ne da bi karkoli spremenil (brez registracije, brez zaupanja vrednega mesta, brez kopije, brez dnevnika), in izpiše izid; /json ga izpiše kot en objekt JSON. Izhodna koda je code.

PoljeVrstaVsebina
codešteviloIzid: 0, če bi zagon uspel, sicer koda napake.
namenizIme izida, na primer Ok, OdbcDriverMissing.
detailnizTehnična podrobnost; pri 0 „<product> <version> can start.“
bootstrappernizRazličica in gradnja zaganjalnika, na primer 1.0.1+2f46abe....
productnizproduct iz bootstrapper.json.
versionnizRazličica v datoteki app-manifest.json vira.
fileniz<file>, <target>, <bitness> iz manifesta.
sourcenizIzvorna mapa kot polna pot.
placednizMape različic v uporabnikovem profilu, ločene z vejico; nothing yet, če ni nobene.
windowsnizAli je Windows 32- ali 64-biten.
accessnizIzdaja (polna ali Runtime), 32- ali 64-bitna izvedba, različica in pot programa Access ter način, kako je bil najden, ali not found.
componentsnizRegistrirana različica WKL (različica knjižnice tipov), za uporabnika ali računalnik, in pot do knjižnice DLL ali not registered.
desktopRuntimenizNajvišji .NET 10 Desktop Runtime v isti 32- ali 64-bitni različici, kot jo ima Access, ali no .NET 10 Desktop Runtime.
odbcDriverspolje nizov<name>: installed ali <name>: missing za vsak vnos v odbcDrivers.
odbcDataSourcespolje nizovOd 1.0.1: <name>: present ali <name>: missing or other bitness za vsak vnos v odbcDataSources.
pathspolje nizovMapi Frontends in Logs izdelka.
planpolje nizovOd 2.0, za projektno datoteko formata 2, ki se lahko zažene: kaj bi zagon namestil in kam – mapa različice, vsak vnos z datotekami (<source> -> <target>, zamaknjeno), ključi registra, datoteka INI, bližnjice in cilj zagona. Sicer prazno.

/whatif <file> izvede enako diagnostiko za katero koli projektno datoteko (relativne poti se razrešijo glede na mapo te datoteke), zato je projekt mogoče preizkusiti, preden ga izdate; z /json je vsak znak zunaj nabora ASCII zapisan kot ubežno zaporedje (\uXXXX), zato je izpis v kateri koli kodni strani enak.

Diagnostika se ustavi pri prvem neuspelem preverjanju, zato so polja za njim lahko prazna: pri kodi 10 ali 11 so izpolnjena samo code, name, detail, bootstrapper in windows. Nova polja se samo dodajajo; skript naj polja, ki jih ne pozna, prezre.

Več zaganjalnikov hkrati

Zaganjalniki z različnimi vrednostmi product so neodvisni: vsak ima svoje mape, dnevnik, stanje in zaupanja vredno mesto, obe aplikaciji pa sta lahko odprti hkrati. Zagon počaka na drug zagon istega izdelka istega uporabnika, medtem ko ta namešča različico (mutex za vsak izdelek in sejo sistema Windows, največ dve minuti, nato koda 41). Izdelki si delijo mapo s komponentami in uporabnikovo registracijo komponent WKL: ko ena aplikacija registrira novejšo različico, jo uporablja tudi druga (starejša aplikacija še naprej teče na novejši različici; glejte dokumentacijo izdelka WKL Forms Object Library, Uvajanje aplikacije s kontrolniki WKL v računalnike uporabnikov).

Sorodne teme

sl/wiki/msaccess/bootstrapper/reference/what-the-starter-writes.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille