Farbschema: Riviera
Sie befinden sich hier: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Bootstrapper » Referenca » Namestitveni program zaganjalnika 2.0

Namestitveni program zaganjalnika 2.0

Od različice 2.0 zaganjalnik aplikacijo namesti za uporabnika sistema Windows tako, kot Windows Installer namesti paket za posameznega uporabnika: na podlagi opisa njenih sestavnih delov, kot eno transakcijo, ki se ob napaki povrne, in s štetjem uporab vsakega skupnega dela. Posodobitev, vrnitev na prejšnjo različico, popravilo in odstranitev zato pustijo natanko tisto stanje, ki ga obljubljajo. Nič od tega ne zahteva skrbniških pravic.

Kdaj namešča 2.0 in kdaj teče 1.0

IzdajaNačin
Projektna datoteka formata 2 (poljuben program ali datoteka; glejte Projektna datoteka)Namestitveni program 2.0, splošni projekt
Mapa s komponentami v izdaji vsebuje registration.json poleg knjižnice DLL (paketi različice WKL Forms Object Library od 1.57) ali pa izdaja ne prinaša komponent (components je prazen)Namestitveni program 2.0 (ta stran)
Komponente, izdane brez registration.json (paketi do vključno 1.56.1)Kot 1.0

registration.json vsebuje registracijo knjižnice DLL za posameznega uporabnika v obliki podatkov; zapiše se ob gradnji paketa (tools\Export-Registration.ps1 iz knjižnice WKL Forms Object Library). Zaganjalnik te ključe zapiše sam, namesto da bi zagnal regsvr32. Windows Installer samoregistracijo odsvetuje, ker je ni mogoče zanesljivo povrniti in ker ni vidno, kaj zapiše.

Kaj se namesti in kje je to zabeleženo

Vsak del nameščene različice je komponenta s ključno potjo; komponenta je nameščena, če njena ključna pot obstaja. Vsaka različica izdelka, ki komponento uporablja, je eden od njenih odjemalcev; na tem temelji štetje uporab.

Komponenta (id)KajKljučna pot
frontend/<product>/<version>Kopija aplikacije v %LOCALAPPDATA%\WKL\<product>\Frontends\<version>, in sicer cela mapa (tudi datoteke, ki jih tam pustita Access ali aplikacija), ter datoteka INI iz iniDatoteka podatkovne zbirke
components/<release>/<bitness>Komponente WKL ene različice, 32- ali 64-bitne, v %LOCALAPPDATA%\WKL\Components\<release>\<bitness> ter njihova registracija pod HKCU\Software\Classes (za x86 v 32-bitnem pogledu)Knjižnica DLL
odbc/<driver>/<release>/<bitness>Gonilnik ODBC, ki ga prinese izdaja, v %LOCALAPPDATA%\WKL\Drivers\<driver>\<release>\<bitness>, in njegov vir podatkov za uporabnika (glejte Gonilniki ODBC)Knjižnica DLL gonilnika
trust/<product>Zaupanja vredno mesto WKL.<product> (glejte Kaj zaganjalnik zapiše in sporoči)Ključ
apps-entry/<product>Vnos v Nastavitvah sistema Windows › Aplikacije: HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\WKL.<product> z vrednostmi DisplayName, DisplayVersion, Publisher, UninstallString ("<starter>" /uninstall), QuietUninstallString, DisplayIcon, InstallDate, NoModify, NoRepairKljuč

Vse to je zabeleženo v podatkovni zbirki namestitvenega programa, %LOCALAPPDATA%\WKL\Installer\installer.db (SQLite, in sicer različica, ki je del sistema Windows; ena podatkovna zbirka za vse izdelke uporabnika). Njene tabele:

TabelaVsebina
ProductKljuč izdelka, prikazno ime, vir
ProductVersionNameščene različice, State (installed/removed), LastWorking (nazadnje zagnana različica)
ComponentId, vrsta, različica, 32- ali 64-bitna izvedba, ključna pot
ComponentClientKatera različica izdelka uporablja katero komponento
ResourceVsaka datoteka, mapa, ključ in vrednost registra posamezne komponente, z lastnostjo Ownership: created (ustvaril jo je zaganjalnik; odstrani se z zadnjim odjemalcem) ali found (obstajala je že prej; nikoli se ne odstrani, temveč se vrne na Previous)
Txn, TxnStepDnevnik: vsaka operacija in vsak korak s podatki za razveljavitev

Kako to preverite od zunaj.

  • Wkl.Bootstrapper.exe /list izpiše vse nameščene različice in vse komponente s številom njihovih uporabnikov; komponenta, ki ji manjka ključna pot, je označena z MISSING (repair: /repair). /list /json izpiše isto v obliki JSON (glejte Ukazi in izhodne kode).
  • Podatkovno zbirko lahko berete s katerim koli orodjem za SQLite, na primer SELECT * FROM ComponentClient, vendar samo berete: vanjo piše izključno zaganjalnik.
  • Dnevnik izdelka (Logs\bootstrapper.log) ima za vsak korak eno vrstico: datum in čas z milisekundami, ID procesa, korak, dopolnjen na 12 znakov, nato besedilo. Za vsako namestitev zaganjalnik zapiše vrstico s korakom install: za izdajo formata 1 install <version> <copy>, ki ji sledi components <release>, če so bile registrirane komponente; za projekt formata 2 install <product> <version>: <n> entries, <n> registry keys. Izdaja, ki uporabi obstoječo registracijo, namesto tega zapiše components using the existing registration ....

Namestitev in posodobitev

Zagon z novo različico (ali prvi zagon) izvede te korake kot eno transakcijo:

  1. Najprej se povrne prejšnja prekinjena transakcija (računalnik se je izklopil, proces je bil končan).
  2. Ob prvem srečanju z izdelkom se prevzame, kar je namestil zaganjalnik 1.0 (glejte spodaj).
  3. Različica se zabeleži.
  4. Če kopija še ne obstaja, se ustvari: datoteka se kopira, preveri glede na velikost in vrednost SHA-256 iz app-manifest.json (koda 42, če se razlikuje) in se ji odstrani oznaka, da izvira s spleta; zapiše se datoteka INI.
  5. Komponente: obstoječa registracija, ki je ni naredil zaganjalnik (registracija oddelka IT za ves računalnik v HKLM ali lastna registracija paketa različice za uporabnika) in ki kaže na obstoječo knjižnico DLL vsaj tiste različice, ki jo zahteva aplikacija (requires v app-manifest.json), se uporabi takšna, kot je. Ponovna registracija bi jo podvojila, COM pa bi dal uporabnikovi registraciji prednost pred novejšo registracijo računalnika. Sicer odloči pravilo različic; mapa različice, ki jo je treba registrirati, se kopira (samo manjkajoče datoteke; knjižnica DLL, ki je v uporabi, se nikoli ne zamenja), registracija pa se zapiše iz registration.json.
  6. Gonilniki ODBC iz izdaje, vsak s svojim virom podatkov (glejte Gonilniki ODBC).
  7. Zaupanja vredno mesto in vnos v Aplikacijah se zapišeta ali posodobita (DisplayVersion).
  8. Transakcija se potrdi.

Nato se v ločeni transakciji odstranijo različice nad keepVersions (nikoli tista, ki se zaganja, in nikoli nazadnje delujoča), potem pa se zažene Access. Različica, ki se uspešno zažene, postane nazadnje delujoča.

Ob napaki se vsak doslej opravljen korak razveljavi v obratnem vrstnem redu; računalnik je v enakem stanju kot pred zagonom, okno pa sporoči kodo:

KodaVzrok
11registration.json ni tabela registracije
32Izdana različica je starejša, kot jo potrebuje aplikacija (in zadostna registracija ne obstaja)
41Datoteke ni bilo mogoče kopirati, premakniti ali odstraniti; če jo uporablja drug program, sporočilo navede ta program (na primer protivirusni program)
42Kopija se ne ujema z manifestom
50Pravilnik prepoveduje uporabnikova zaupanja vredna mesta

Če datoteko uporablja drug program (protivirusni program, indeksiranje), koraki z datotekami kratek čas počakajo in poskusijo znova.

Primer: oddelek IT je komponente registriral za računalnik. Komponente knjižnice WKL Forms Object Library 1.56 so registrirane pod HKLM, knjižnica DLL pa je v C:\Program Files (x86)\WKL\Access Components; aplikacija zahteva 1.51, izdaja pa prinaša 1.56.1. Zaganjalnik ne registrira ničesar, ne kopira komponent in ne zabeleži komponente components/...; v dnevniku je zapisana vrstica components using the existing registration 1.56 for the computer: C:\Program Files (x86)\WKL\Access Components\Wkl.Access.Components.dll. Če bi bila registracija za računalnik 1.48, bi se za uporabnika registrirala izdana različica 1.56.1 in odtlej bi imela uporabnikova registracija prednost pred registracijo računalnika.

Katera različica se registrira

Za posameznega uporabnika je v 32- in v 64-bitnem pogledu registra registrirana po ena različica WKL Forms Object Library: ključi razredov so v vseh različicah enaki, zato zadnja registracija velja za vse uporabnikove aplikacije. Pri vsaki različici izdelka je zabeležena različica komponent, ki jo zahteva njena aplikacija (requires v app-manifest.json). Zaganjalnik registrira izdano različico, razen če bi s tem drugemu izdelku vzel različico, ki jo ta potrebuje:

Izdana različicaRegistrirana različica (ki jo je registriral zaganjalnik)Rezultat
Nižja, kot jo zahteva aplikacijaKatera koliKoda 32; nič se ne spremeni
Vsaj takšna, kot jo zahteva aplikacijaNobena ali nižja, kot jo zahteva aplikacijaRegistrira se izdana različica
Višja od registrirane različiceVsaj takšna, kot jo zahteva aplikacijaRegistrira se izdana različica
Enaka registrirani različiciEnakaNič se ne spremeni; različica izdelka postane še en odjemalec
Nižja od registrirane različiceVsaj takšna, kot jo zahteva aplikacijaIzdana različica se registrira, če nobena nameščena različica drugega izdelka ne zahteva več; sicer registrirana različica ostane, različica izdelka pa postane še en njen odjemalec

Štejejo samo drugi izdelki. Različice istega izdelka, ki ostanejo poleg zagnane (keepVersions), ne štejejo: ob vrnitvi na prejšnjo različico izdelka se registrira različica komponent, s katero je bila ta izdana, ob prehodu naprej pa znova novejša. Primer: izdelek A 1.4.0 zahteva 1.56 in je bil izdan z 1.56.1, A 1.5.0 zahteva 1.57 in je bil izdan z 1.57.0.

ZagonRegistrirano po zagonu
A 1.5.01.57.0
A 1.4.0 (vrnitev), noben drug izdelek ni nameščen1.56.1
Znova A 1.5.01.57.0
A 1.4.0, medtem ko je nameščen izdelek B 1.0.0, ki zahteva 1.571.57.0 ostane

Če dva izdelka zahtevata različni različici, zato oba uporabljata višjo. Ko se registracija spremeni, Access, ki že teče, obdrži knjižnico DLL, ki jo je naložil, pozneje zagnani procesi Access pa naložijo na novo registrirano različico.

Različica komponent je vrednost release iz njihovega registration.json, ki jo Export-Registration.ps1 vzame iz različice izdelka datoteke Wkl.Forms.ObjectLibrary.Managed.dll (do izdaje 1.68: Wkl.Access.Components.Managed.dll; na primer 1.56.1). Podatki o različici v nativnem zagonskem modulu (Wkl.Forms.ObjectLibrary.dll, do izdaje 1.68 Wkl.Access.Components.dll) vsebujejo samo glavno in podrejeno številko (1.56.0 v 1.56.1) in se ne uporabljajo; zaganjalnik 1.0 jih je uporabljal, zato imajo lahko njegove mape pod Components to številko.

Gonilniki ODBC

Izdaja lahko prinese gonilnike ODBC za uporabnika, tako da jih ni treba nameščati nobenemu skrbniku. Vsak gonilnik je v izdaji v mapah odbc\<driver>\x86 in odbc\<driver>\x64 ter je naveden v bootstrapper.json:

{
  "format": 1,
  "product": "Stranke",
  "source": "\\\\server\\apps\\kunden\\production",
  "components": "components",
  "odbcDataSources": [ "WklGateway" ],
  "odbc": [
    { "driver": "Wkl OData", "folder": "odbc\\Wkl OData", "dll": "Wkl.Data.OData.Odbc.dll", "dataSource": "WklGateway" }
  ]
}
PoljePomen
driverIme gonilnika; obenem mapa pod %LOCALAPPDATA%\WKL\Drivers in vrednost v ODBC Data Sources
folderMapa gonilnika v izdaji, relativno glede na source; zaganjalnik vzame podmapo, ki ustreza 32- ali 64-bitnemu programu Access
dllKnjižnica DLL gonilnika v tej podmapi
dataSourceUporabniški vir podatkov, prek katerega se poveže aplikacija

Zaganjalnik podmapo kopira v %LOCALAPPDATA%\WKL\Drivers\<driver>\<release>\<bitness>, kjer je <release> različica izdelka knjižnice DLL brez oznake gradnje, in za uporabnika zapiše vir podatkov (za x86 v 32-bitnem pogledu registra):

KljučVrednostPodatki
HKCU\Software\ODBC\ODBC.INI\<dataSource>DriverPolna pot kopirane knjižnice DLL
Description<driver> (Wkl.Bootstrapper)
HKCU\Software\ODBC\ODBC.INI\ODBC Data Sources<dataSource><driver>

Vnos v ODBCINST.INI se ne zapiše; Access odpre povezane tabele in prepustne poizvedbe prek vira podatkov, katerega Driver je pot do knjižnice DLL. Vse drugo – naslov storitve, podatkovna zbirka – sodi v povezovalni niz povezav aplikacije, ne v vir podatkov. Vir podatkov, naveden v odbc, mora obstajati šele po zagonu; drugi vnosi v odbcDataSources morajo obstajati že prej.

Gonilnik je komponenta s štetjem uporab, tako kot komponente WKL: novejša različica, izdana pozneje, se namesti poleg stare, vir podatkov pa nato kaže nanjo. Mapa različice in vir podatkov se odstranita skupaj z zadnjo različico izdelka, ki ju uporablja. Vir podatkov s tem imenom, ki je obstajal že, preden ga je zapisal zaganjalnik, se vrne na prejšnje vrednosti.

Za razliko od komponent WKL za vir podatkov ne velja pravilo različic: vsak zagon ga zapiše za zagnano različico. Vrnitev na različico, izdano s starejšim gonilnikom, vir podatkov znova usmeri na ta starejši gonilnik. Če dva izdelka izdata isti dataSource z različnima različicama gonilnika, odloči izdelek, ki je bil zagnan nazadnje; koda se ne sporoči, obe mapi pa ostaneta, dokler ju uporablja katera koli različica. Če si izdelka različice gonilnika ne smeta deliti, dajte vsakemu lasten dataSource.

Vrnitev na prejšnjo različico

Ko vir znova ponuja nižjo različico, jo zagon znova namesti: njeno kopijo (če še obstaja), njene gonilnike (vir podatkov znova kaže na starejši gonilnik) in njeno različico komponent po pravilu različic. Novejše različice ostanejo, dokler jih ne odstranita keepVersions ali odstranitev izdelka, zato se uporabnik lahko pozneje spet premakne naprej.

Če projektna datoteka vsebuje deliveryKey, se nižja različica iz vira namesti samo, če je založnik višjo umaknil v podpisani izdaji (/publish /withdraw); sicer zaganjalnik obdrži nameščeno različico in sporoči kodo 52. Glejte Objava podpisane izdaje.

Na prejšnjo različico se lahko vrnete tudi takrat, ko vir že ponuja novejšo, in sicer v oknu z nastavitvami (Wkl.Bootstrapper.exe /settings). Njegova tri dejanja tečejo prek namestitvenega programa, vsako kot ena transakcija s svojo povrnitvijo:

DejanjeKaj naredi
Zaženi to različicoZnova registrira, kar je izbrana različica uporabljala: njeno različico komponent WKL (iz nameščene mape, po pravilu različic) in njene vire podatkov. Nato zažene Access s kopijo te različice in jo označi kot nazadnje delujočo, zato jo čiščenje ohrani. Iz vira se ne kopira nič.
Znova kopirajOdstrani izbrano različico z vsemi komponentami, ki jih je uporabljala samo ona. Naslednji zagon znova namesti različico, ki jo ponuja vir. Dokler je kopija odprta v programu Access, je dejanje takoj zavrnjeno.
Odstrani stare različiceOdstrani različice nad keepVersions, kot to stori zagon. Nikoli ne odstrani različice, ki jo ponuja vir, ali nazadnje delujoče različice.

Zaženi to različico vrne različico komponent, ki jo je različica izdelka uporabljala, ne tiste, ki jo je vsebovala njena izdaja. Če je različica izdelka uporabljala novejše komponente, ker jih je potreboval drug izdelek, ostanejo registrirane te novejše komponente.

Za izdelek, ki ga je namestil samo zaganjalnik 1.0, veljajo za njegove mape dejanja različice 1.0, dokler ga naslednji zagon ne prevzame.

Popravilo

Wkl.Bootstrapper.exe /repair izvede namestitev trenutne različice, ne da bi zagnal Access: vse, kar manjka, se obnovi iz izdaje – kopija, če je bila izbrisana, datoteke komponent, izbrisane ali spremenjene vrednosti v registru, zaupanja vredno mesto in vnos v Aplikacijah. Kar je že na mestu, ostane nespremenjeno; obstoječa kopija obdrži uporabnikove podatke.

Odstranitev

Wkl.Bootstrapper.exe /uninstall (to je tudi ukaz, ki ga Windows zažene iz Nastavitev › Aplikacije) kot eno transakcijo odstrani:

  • vse različice izdelka: mape različic z vsem, kar je v njih;
  • vsako komponento, ki je ne uporablja nobena druga različica izdelka uporabnika: datoteke, mape ter ključe in vrednosti registra, ki jih je ustvaril zaganjalnik;
  • vrednosti v registru, ki so obstajale, preden jih je zapisal zaganjalnik, se vrnejo na prejšnjo vsebino, nikoli se ne izbrišejo;
  • zaupanja vredno mesto in vnos v Aplikacijah.

Komponente, ki jih še uporablja drug uporabnikov izdelek, ostanejo, z njimi pa tudi skupni ključi razredov. Če je odstranjeni izdelek uporabljal registrirano različico, se znova registrira najnovejša preostala različica (32- ali 64-bitna, enako kot prej). Če je kopija odprta v programu Access, se ne odstrani nič, koda pa je 41 z navedbo programa; zaprite Access in ukaz zaženite znova.

Bližnjice s seznama shortcuts projekta se odstranijo skupaj z izdelkom, tudi tiste, katerih cilj je sam zaganjalnik.

Nespremenjeni ostanejo: mapa, iz katere teče zaganjalnik, z datoteko bootstrapper.json, bližnjice, ki ne izvirajo iz projekta, sama podatkovna zbirka namestitvenega programa in dnevniki pod %LOCALAPPDATA%\WKL\<product>\Logs.

Ukazi in izhodne kode

UkazKaj narediIzhodna koda
(brez)Namesti ali posodobi, nato zažene AccessKoda izvajanja; 0, ko se je Access zagnal; 1602, ko je bil zagon v razširjenem pogledu preklican
/quietEnako, vendar brez oknaKot zgoraj
/repairNamesti, kar manjka, programa Access ne zaženeKoda izvajanja; 0, ko je namestitev popolna
/uninstall [/quiet]Odstrani izdelek iz bootstrapper.json poleg datoteke EXE. Brez /quiet (vnos v razdelku Aplikacije sistema Windows) zaganjalnik najprej vpraša v svojem oknu, v jeziku in barvni shemi projekta; privzeti gumb je Prekliči, zato tipki Enter in Esc ter zaprtje okna vse ohranijo. Z /quiet (skripti, QuietUninstallString) odstrani brez vprašanja0 odstranjeno; 1602 preklicano, nič ni odstranjeno (koda programa msiexec); 10 manjka bootstrapper.json; 41 v uporabi ali neuspešno (povrnjeno); 43 dejanje beforeUninstall ni uspelo (nič ni odstranjeno)
/listIzpiše nameščene različice in komponente0
/list /jsonEnako v obliki JSON0
/RUNCFG <file> s katerim koli ukazomNamesto bootstrapper.json uporabi <file> (datoteko .json v mapi zaganjalnika, navedeno le z imenom): več aplikacij poleg enega zaganjalnika. Vnos v Aplikacijah odstrani z istim stikalom.Kot ukaz; 10 za ime s potjo
/new-key <name>Ustvari založnikov ključ za izdaje v uporabnikovi shrambi ključev sistema Windows in izpiše njegov javni del za deliveryKey0; 10 ime že obstaja
/publish [/key <name>] [/withdraw <version>[,<version>]] [/store]Zapiše delivery.json (s ključem pa še delivery.json.sig) v vir projektne datoteke; /withdraw navede višje različice, ki jih ta izdaja umika; /store (od različice 3.3.0) zapiše še shrambo po vsebini in sporoči velikost posodobitve; glejte Objava podpisane izdaje0; 11 umaknjena različica ni višja različica; 12 vir ni dosegljiv; 51 ključ manjka ali ne pripada projektu
/whatif <file> [/json]Preizkusni zagon projektne datoteke: vsa preverjanja zagona in načrt, kaj bi se kam namestilo, ne da bi se karkoli spremenilo; glejte Kaj zaganjalnik zapiše in sporočiKot /diagnose: 0, če bi zagon uspel, sicer koda napake
/check <file> [/json]Preveri projektno datoteko glede na njena pravila in izpiše vsako težavo; z /json objekt z valid, format in problems, od različice 3.3.0 tudi notes. Opombe (notes, v besedilnem izpisu vrstice, ki se začnejo z note:) datoteke ne naredijo neveljavne in ne spremenijo izhodne kode; od različice 3.3.0 /check izpiše opombo, če veljavna projektna datoteka v formatu 2 nima ključa deliveryKey. Bere samo projektno datoteko; ali izdaja vsebuje, kar datoteka navaja (na primer registration.json komponent), preveri /whatif. Od različice 2.3.0 se datoteka s končnico .msi.json preveri kot nastavitve namestitvenega programa, vključno z datotekami, ki jih te navajajo0 veljavna; 10 datoteke ni mogoče najti; 11 težave
/msi-sources <project file> /out <folder> [/starter <exe>] [/version <x.y.z>]Od različice 2.3.0: zapiše izvorne datoteke WiX za paket zaganjalnika iz <name>.msi.json poleg projektne datoteke (ali za paket brez pogovornih oken, če te datoteke ni) in v obliki JSON izpiše pakete, ki jih je treba zgraditi (builds z scope, culture, output, sources, localization; images za pretvorbo iz PNG). Uporablja ga tools\New-StarterMsi.ps1; ne potrebuje kompleta WiX Toolset0 zapisano; 10 manjka projektna datoteka, mapa ali zaganjalnik; 11 kršeno pravilo ali stran, ki ne ustreza
/import-reg <file.reg> [/json]Prebere datoteko .reg urejevalnika registra v vnose registra projekta (samo pod HKEY_CURRENT_USER; HKEY_CLASSES_ROOT postane uporabnikov Software\Classes, WOW6432Node pa 32-bitni pogled) in navede, kaj je bilo izpuščeno (ključi računalnika, binarne vrednosti, brisanja). Ne zapiše ničesar; z /json seznam registry projekta in notes, samo ASCII0 prebrano; 10 datoteke ni mogoče najti; 11 ni datoteka .reg
/new-project <file> /template <names> [/json]Iz predlog zapiše novo projektno datoteko formata 2; <names> je z vejicami ločen seznam iz access (aplikacija iz app-manifest.json orodja za gradnjo, zagnana tako, kot določa manifest, s pogojem Microsoft Access), components (komponente knjižnice WKL Forms Object Library iz components\x86 in components\x64 mape z izdajo, registrirane za uporabnika, s pogojem .NET 10 Desktop Runtime), odbc (primer gonilnika ODBC z uporabniškim virom podatkov za 32- in 64-bitni pogled, ki ga zamenjate z gonilnikom, ki ga izdajate) in json (WKL Office JSON iz json\x86 in json\x64) ter dotnet (zasebno izvajalno okolje .NET iz dotnet\x86 in dotnet\x64, ki se hrani ločeno po različicah pod [WklRoot]\Dotnet in se zagnanemu programu sporoči kot DOTNET_ROOT(x86) ali DOTNET_ROOT; nadomesti pogoj .NET 10 Desktop Runtime iz components, vendar samo za programe, ki jih zažene zaganjalnik); brez predloge nastane projekt, ki še ničesar ne zažene. Ključ izdelka je ime mape datoteke, mapa z izdajo pa deploy poleg zaganjalnika. Navede, kaj je še treba narediti; z /json objekt z written, notes in problems, samo ASCII0 zapisano; 10 datoteka ni navedena; 11 neznana predloga ali datoteka že obstaja
/import-starterpro <xml> [/out <file>] [/json]Konfiguracijo prejšnjega zaganjalnika pretvori v projektno datoteko formata 2 (privzeto bootstrapper.json poleg nje) in navede, kaj ni bilo prevzeto; z /json objekt z written, notes in problems, pri čemer je vsak znak zunaj nabora ASCII zapisan kot ubežno zaporedje; glejte Prehod s prejšnjega zaganjalnika0 zapisano; 10 konfiguracije ni mogoče najti; 11 ni konfiguracija prejšnjega zaganjalnika ali projektna datoteka že obstaja

Kode so enake kot na strani Kode napak zaganjalnika. /list /json izpiše en objekt:

{
  "versions": [
    { "product": "Stranke", "displayName": "Stranke", "version": "1.4.0", "lastWorking": true }
  ],
  "components": [
    { "id": "components/1.56.1/x86", "keyPath": "C:\\Users\\<user>\\AppData\\Local\\WKL\\Components\\1.56.1\\x86\\Wkl.Access.Components.dll", "clients": 2, "present": true }
  ]
}
PoljePomen
versions[].productKljuč izdelka iz bootstrapper.json
versions[].displayNameIme, prikazano v Aplikacijah
versions[].versionRazličica aplikacije (app-manifest.json)
versions[].lastWorkingTrue za različico, ki je bila nazadnje uspešno zagnana
components[].idId komponente, glejte Kaj se namesti
components[].keyPathDatoteka ali ključ, katerega obstoj pomeni, da je komponenta nameščena
components[].clientsŠtevilo različic izdelkov, ki uporabljajo komponento
components[].presentFalse, če ključna pot manjka; /repair jo vrne

Če ni nameščeno nič, sta polji prazni.

Preizkus, da neuspela namestitev ne pusti ničesar

Če želite povrnitev videti na preizkusnem računalniku, povzročite, da kopiranje ne uspe, potem ko je bila različica že zabeležena:

  1. Zaženite /list /json in shranite izpis.
  2. V vir shranite novo različico in v njeni datoteki podatkovne zbirke spremenite en bajt, potem ko je bil zapisan app-manifest.json.
  3. Zaženite zaganjalnik. Sporoči kodo 42.
  4. Znova zaženite /list /json: izpis je enak kot v 1. koraku, pod Frontends pa ni mape nove različice.

Če želite videti, da se povrneta tudi registracija komponent in vir podatkov, povzročite, da ne uspe korak, ki sledi za njima. Gonilnik se namesti za komponentami (6. korak za 5. korakom), zato je primerna izdaja z vnosom odbc:

  1. Zaženite /list /json in si zapišite vrednosti ključa razreda komponent (na primer HKCU\Software\Classes\WklForms.Application\CLSID, do izdaje 1.68 WklComponents.Application, in njegovega InprocServer32) ter ključa HKCU\Software\ODBC\ODBC.INI\<dataSource>.
  2. V vir shranite novo različico, katere izdaja prinaša novejšo različico komponent in gonilnik.
  3. Izdano knjižnico DLL gonilnika imejte odprto tako, da je ni mogoče prebrati, na primer v lupini PowerShell: $f = [System.IO.File]::Open('<source>\odbc\<driver>\x86\<dll>', 'Open', 'Read', 'None').
  4. Zaženite zaganjalnik. Po nekaj sekundah ponovnih poskusov sporoči kodo 41.
  5. Primerjajte: /list /json, ključ razreda in vir podatkov so enaki kot v 1. koraku; pod %LOCALAPPDATA%\WKL\Components ali %LOCALAPPDATA%\WKL\Drivers ni mape nove različice.
  6. Sprostite datoteko ($f.Dispose()) in znova zaženite: nova različica se namesti.

Pravilnik, ki prepoveduje zaupanja vredna mesta, za ta namen ni primeren: zaganjalnik ga preveri, preden karkoli namesti (koda 50 brez transakcije), ključev pravilnika pod HKCU\Software\Policies pa brez skrbniških pravic ni mogoče zapisati.

Če želite videti, da odstranitev izdelka ne odstrani samo napol, odprite nameščeno kopijo v programu Access in zaženite /uninstall /quiet: koda 41 navede MSACCESS.EXE, /list pa še vedno prikaže vse različice in komponente.

Prevzem zaganjalnika 1.0

Ko različica 2.0 prvič naleti na izdelek, kot svoje zabeleži, kar je namestil zaganjalnik 1.0: mape različic pod Frontends (nazadnje delujočo različico iz State\provisioning.json), zaupanja vredno mesto, ki ga je zapisala različica 1.0 (njen opis se konča z (Wkl.Bootstrapper)), in registracijo, ki jo je različica 1.0 naredila z regsvr32 iz %LOCALAPPDATA%\WKL\Components. Ti deli se nato počistijo in odstranijo kot deli, ki jih je namestila različica 2.0. Registracije iz drugih virov se ne prevzamejo.

Omejitve namestitvenega programa

  • Dva zaganjalnika istega uporabnika sistema Windows, ki nameščata hkrati, se med seboj ne uskladita: podatkovna zbirka namestitvenega programa je ena na uporabnika, zaganjalnik, ki najde nedokončano namestitev, pa jo povrne, tudi če jo izvaja drug zaganjalnik. Zaženite ju enega za drugim (format 1 brez registration.json se uskladi po izdelkih).
  • Z datoteko formata 1 okolja .NET Desktop Runtime ni mogoče izdati: zaganjalnik ga samo preveri (koda 33). Projekt formata 2 lahko izda zasebno izvajalno okolje; glejte Zasebno izvajalno okolje .NET v izdaji.
  • WKL JSON z datoteko formata 1 ni izdan: aplikacija, ki ga uporablja, potrebuje vnaprejšnjo registracijo, na primer s strani oddelka IT. Projekt formata 2 ga izda kot vnos registerCom, enako kot kateri koli strežnik COM.
  • Računalniki, ki programe v uporabnikovem profilu omejujejo z AppLockerjem ali s funkcijo Windows Defender Application Control, niso podprti.
  • Vir prek protokola HTTP/HTTPS ni podprt; vir je mapa ali skupna raba.

Sorodne teme

sl/wiki/msaccess/bootstrapper/reference/installer.txt · Zuletzt geändert: von Wolfgang van der Stille