Paketų kūrimas „Package Deployer“ įrankiui
„Package Deployer“ suteikia administratoriams galimybę diegti paketus „Microsoft Dataverse“ egzemplioriuose. Paketą Package Deployer gali sudaryti bet kuris iš tolimesnių:
- Vienas arba keli Dataverse sprendimo failai.
- Paprasti failai arba eksportuotų konfigūracijos duomenų failas iš konfigūravimo perkėlimo įrankio. Daugiau informacijos apie įrankį žr. Konfigūravimo duomenų perkėlimas tarp egzempliorių ir organizacijų naudojant konfigūravimo perkėlimo įrankį.
- Pasirinktinis kodas, kuris gali būti vykdomas prieš diegiant, diegimo metu arba įdiegus paketą „Dataverse“ egzemplioriuje.
- HTML turinys, susijęs su konkrečių paketu, kuris gali būti rodomas diegimo proceso pradžioje arba pabaigoje. Šis turinys gali būti naudingas pateikti sprendimų ir failų, kurie visuotinai diegiami, aprašą pakete.
Pastaba.
Yra kitas paketo tipas, vadinamas priedo paketu. Tokio tipo paketas skirtas nuo priedų priklausomiems rinkiniams ir neturi ryšio su Package Deployer paketais.
Būtinosios sąlygos
- Įsitikinkite, kad turite visus sprendimą ir kitus failus, kuriuos norite įtraukti į paketą.
- Visual Studio 2019 m. ar vėliau, arba Visual Studio kodas.
Proceso apžvalga
Norėdami sukurti Package Deployer paketą, atlikite šiuos veiksmus.
- Kurti Visual Studio ar MSBuild projektą
- Į projektą įtraukite sprendimų ir kitų failų
- Teikiamų HTML failų naujinimas (pasirinktinis)
- Nustatykite paketo konfigūracijos reikšmes
- Nurodykite pasirinktinį paketo kodą
- Paketo komponavimas ir visuotinis diegimas
Šie veiksmai išsamiai aprašyti šiame straipsnyje.
Kurti projekto paketą
Pirmasis veiksmas yra sukurti paketo Visual Studio ar MSBuild projekte. Norėdami tai atlikti, savo programavimo kompiuteryje turite įdiegti vieną iš dviejų galimų įrankių plėtinių. Jei naudojate Visual Studio Code, įdiekite Microsoft Power Platform CLI. Kitu atveju, jei naudojate Visual Studio 2019 ar naujesnę versiją, įdiekite Power Platform įrankius Visual Studio.
Toliau pasirinkite atitinkamą skirtuką ir sužinokite, kaip sukurti projektą naudojant norimą įrankių plėtinį. Abu įrankiai išveda projektą panašiu formatu.
Vykdykite pac pirminį paketą komandą norėdami sukurti pradinį paketą. Daugiau informacijos: pac paketas
pac package init help
pac package init --outputDirectory DeploymentPackage
Gautoje CLI išvestyje yra aplankai ir failai, rodomi toliau. Aplanko pavadinimas „Deployment Folderage“ čia buvo naudojamas kaip pavyzdys.
C:.
└───DeploymentPackage
│ DeploymentPackage.csproj
│ PackageImportExtension.cs
│
└───PkgAssets
ImportConfig.xml
manifest.ppkg.json
Sukurtame projekte aplanke PkgAssets raskite ImportConfig.xml konfigūracijos failą ir failą PackageImportExtension.cs. Modifikuosite šiuos failus, kaip aprašyta toliau šiame straipsnyje.
Naujo paketo failus
Sukūrę paketo projektą, galite pradėti į tą projektą įtraukti sprendimų ir kitų failų.
Naudodami CLI, galite įtraukti išorinių paketų, sprendimų ir nuorodų į savo paketo projektą naudodami vieną įtraukti papildomas komandas. Įveskite pac package help
kad pamatytumėte antriniųcomdų sąrašą. Į savo paketą įtraukkime sprendimą.
> pac package add-solution help
Commands:
Usage: pac package add-solution --path [--import-order] [--skip-validation] [--publish-workflows-activate-plugins] [--overwrite-unmanaged-customizations] [--import-mode] [--missing-dependency-behavior] [--dependency-overrides]
> cd .\DeploymentPackage\
> pac package add-solution --path ..\TestSolution_1_0_0_1_managed.zip
The item was added successfully.
Paketo konfigūravimas
Nustatykite paketo konfigūraciją įtraukdami informaciją apie paketą ImportConfig.xml failą projekte. Žiūrėkite ImportConfig nuorodą , kur rasite tinkamų naudoti elementų ir atributų pavyzdį ir aprašus.
Įtraukti tinkintą kodą
Galite įtraukti pasirinktinį kodą, kuris vykdomas prieš importuotą paketą, jo metu ir po jo į aplinką. Tam, kad tą atliktumėte, vadovaukitės šiomis instrukcijomis.
Redaguokite PackageTemplate.cs (arba PackageImportExtension.cs) failą projekto šakniniame aplanke.
C# faile galite:
Įveskite pasirinktinį kodą, kuris bus vykdomas, kai paketas inicijuojamas
InitializeCustomExtension
pakeitimo metodo apibrėžime.Šį metodą galima naudoti, kad paleidžiant paketą vartotojai galėtų naudoti vykdymo parametrus. Būdami kūrėju, naudodami RuntimeSettings ypatybę į paketą galite įtraukti bet kurio vykdymo parametrą palaikymą, jei tik yra kodas, apdorojantis jį atsižvelgiant į vartotojo įvestį.
Pavyzdžiui, šis pavyzdinis kodas įjungia paketo vykdymo laiko parametrą, vadinamą
SkipChecks
ir turintį dvi galimas reikšmes: teisinga arba klaidinga. Pavyzdinis kodas tikrina, ar vartotojas vykdydamas „Package Deployer“ nurodė vykdymo parametrus (naudodamas komandų eilutę arba „“PowerShell“), o tada atitinkamai apdoroja informaciją. Jei vykdydamas paketą vartotojas nenurodė jokio vykdymo parametro, RuntimeSettings ypatybės reikšmė bus neapibrėžta.public override void InitializeCustomExtension() { // Do nothing. // Validate the state of the runtime settings object. if (RuntimeSettings != null) { PackageLog.Log(string.Format("Runtime Settings populated. Count = {0}", RuntimeSettings.Count)); foreach (var setting in RuntimeSettings) { PackageLog.Log(string.Format("Key={0} | Value={1}", setting.Key, setting.Value.ToString())); } // Check to see if skip checks is present. if ( RuntimeSettings.ContainsKey("SkipChecks") ) { bool bSkipChecks = false; if (bool.TryParse((string)RuntimeSettings["SkipChecks"], out bSkipChecks)) OverrideDataImportSafetyChecks = bSkipChecks; } } else PackageLog.Log("Runtime Settings not populated"); }
Šis kodas leidžia administratoriui naudoti komandų eilutę arba Import-CrmPackage „cmdlet“, kad nurodytų, ar paleidžiant Package Deployer įrankį paketo importavimui praleisti saugos patikras. Daugiau informacijos: Paketų diegimas naudojant „Package Deployer“ ir „Windows PowerShell“
Įveskite pasirinktinį kodą, kuris bus vykdomas prieš importuojant sprendimus
PreSolutionImport
perrašymo metodo apibrėžime, kad nustatytumėte, ar palikti ar perrašyti tinkinimus atnaujinant nurodytą sprendimą paskirties „Dataverse“ egzemplioriuje ir ar automatiškai aktyvuoti priedus ir darbo eigas.Nepaisymo metodo apibrėžimo
RunSolutionUpgradeMigrationStep
naudojimas duomenų transformacijai atlikti arba naujinti versiją tarp dviejų sprendimo versijų Šis metodas vadinamas tik tuo atveju, jei importuojamas sprendimas jau yra paskirties Dataverse egzemplioriuje.Ši funkcija laukia šių parametrų:
Parametras Aprašas solutionName
Sprendimo pavadinimas oldVersion
Seno sprendimo versijos numeris newVersion
Naujo sprendimo versijos numeris oldSolutionId
Seno sprendimo GUID. newSolutionId
Naujo sprendimo GUID. Įveskite pasirinktinį kodą, kuris bus vykdomas prieš baigiant sprendimo importavimą
BeforeImportStage
metodo pakeitimo apibrėžime. Prieš baigiant sprendimo importavimą, importuojami pavyzdiniai duomenys ir tam tikri paprastieji sprendimų failai, nurodytiImportConfig.xml
faile.Perrašyti šiuo metu pasirinktą konfigūracijos duomenų importavimo kalbą naudojant perrašymo metodo apibrėžimą
OverrideConfigurationDataFileLanguage
. Jei nurodytos kalbos lokalės ID (LCID) nerandate galimų paketo kalbų sąraše, importuojamas numatytasis duomenų failas.Galimas konfigūravimo duomenų kalbas galite nurodyti
<cmtdatafiles>
mazge, esančiameImportConfig.xml
faile. Numatytasis konfigūravimo duomenų importavimo failas nurodomascrmmigdataimportfile
atribute, esančiameImportConfig.xml
faile.Duomenų patikrinimų praleidimas (OverrideDataImportSafetyChecks = true) čia gali būti veiksmingas, jei esate tikri, kad tiksliniame Dataverse egzemplioriuje nėra jokių duomenų.
Įveskite pasirinktinį kodą, kuris bus vykdomas baigus sprendimo importavimą
AfterPrimaryImport
> metodo pakeitimo apibrėžime. Likę plokštieji failai, kurie nebuvo importuoti anksčiau, prieš pradedant sprendimo importavimą, importuojami dabar.Pakeiskite numatytąjį paketo aplanko pavadinimą iš PkgFolder į norimą paketo pavadinimą. Norėdami tai atlikti, pervadinkite
PkgFolder
(ar PkgAssets) aplankas Sprendimo naršyklės juostoje ir tada redaguokite grįžtamąją vertę ypatybėjeGetImportPackageDataFolderName
.public override string GetImportPackageDataFolderName { get { // WARNING this value directly correlates to the folder name in the Solution Explorer where the ImportConfig.xml and sub content is located. // Changing this name requires that you also change the correlating name in the Solution Explorer return "PkgFolder"; } }
Pakeiskite paketo pavadinimą redaguodami grąžinamą reikšmę ypatybėje
GetNameOfImport
.public override string GetNameOfImport(bool plural) { return "Package Short Name"; }
Ši grąžinta reikšmė yra jūsų paketo pavadinimas, rodomas vedlio Dynamics 365 Package Deployer paketo pasirinkimo puslapyje.
Pakeiskite paketo aprašymą redaguodami grąžinamą reikšmę ypatybėje
GetImportPackageDescriptionText
.public override string GetImportPackageDescriptionText { get { return "Package Description"; } }
Ši grąžinta reikšmė yra paketo aprašas, rodomas šalia paketo pavadinimo vedlio paketo Package Deployer pasirinkimo puslapyje.
Pakeiskite paketo ilgąjį pavadinimą redaguodami grąžinamą reikšmę ypatybėje
GetLongNameOfImport
.public override string GetLongNameOfImport { get { return "Package Long Name"; } }
Paketo ilgasis pavadinimas bus rodomas kitame puslapyje, kai pasirinksite diegiamą paketą.
Be to, darbui su paketu galima naudoti šią funkciją ir kintamuosius:
Vardas ir pavardė Tipas Aprašas CreateProgressItem(String) Funkcija Naudojama kurti naują eigos elementą vartotojo sąsajoje (UI). RaiseUpdateEvent(String, ProgressPanelItemStatus) Funkcija Naudojama atnaujini eigai, sukurtai pateikus CreateProgressItem(String) kvietimą.
ProgressPanelItemStatus yra išvardijimas su šiomis vertėmis:
Darbas = 0
Atlikta = 1
Nepavyko = 2
Įspėjimas = 3
Nežinoma = 4RaiseFailEvent(String, Exception) Funkcija Naudojama nutraukti esamos būsenos importavimui su klaidos pranešimu. IsRoleAssoicatedWithTeam(Guid, Guid) Funkcija Naudojama nustatyti, ar vaidmuo yra susijęs su nurodyta komanda. IsWorkflowActive(Guid) Funkcija Naudojama nustatyti, ar nurodyta darbo eiga yra aktyvi. PackageLog Klasės rodyklė Tai yra rodyklė į paketo inicijuotą registracijos sąsają. Šią sąsają naudoja paketas pranešimų ir klaidų registracijai paketo žurnalo faile. RootControlDispatcher Ypatybė Tai yra skirstymo sąsaja, naudojama kontroliuoti nuosavai UI paketo diegimo metu. Naudokite šią sąsają išdėstyti bet kuriems UI elementams arba komandoms. Prieš naudojant šį kintamąjį svarbu patikrinti, ar jame nėra neapibrėžtų reikšmių, nes jis gali būti nenustatytas kaip reikšmė. CrmSvc Ypatybė Tai yra rodyklė į CrmServiceClient klasę, kuri leidžia paketui kreiptis į „Dynamics 365“ iš paketo. Naudokite ją vykdyti SDK metodams ir kitiems veiksmams perrašytuose metoduose. DataImportBypass Ypatybė Naudokite norėdami nurodyti, ar Dynamics 365 Package Deployer turi praleisti visas duomenų importavimo operacijas, pvz., Dataverse pavyzdinių duomenų, paprastųjų failų duomenų ir duomenų, eksportuotų iš konfigūravimo perkėlimo įrankio, importavimo operacijas. Nurodykite „teisinga“ arba „klaidinga“. Numatytoji reikšmė yra false
.OverrideDataImportSafetyChecks Ypatybė Nurodykite, ar Dynamics 365 Package Deployer apeina kai kurias saugos patikras, o tai padeda pagerinti importavimo našumą. Nurodykite true
arbafalse
. Numatytoji reikšmė yrafalse
.
Šią ypatybętrue
turėtumėte nustatyti tik tuo atveju, jei paskirties Dataverse egzemplioriuje nėra jokių duomenų.Įrašykite projektą. Kitas veiksmas yra sukurti paketą.
Kurti ir talpinti
Tolesniuose skyriuose aprašoma, kaip sukurti ir įdiegti paketą.
Komponavimo versija
Paketo kūrimas aprašytas toliau, atsižvelgiant į tai, kokį įrankį naudojate.
Norėdami sukurti paketą, sukurtą naudojant CLI, galite įkelti .csproj failą Visual Studio, bet vietoj to naudosime komandą dotnet ir MSBuild. Toliau pateiktame pavyzdyje laikoma, kad darbo kataloge yra *.csproj failas.
> dotnet publish
DeploymentPackage -> C:\Users\peter\Downloads\DeploymentPackage\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Galite pasirinktinai peržiūrėti integruoto paketo išsamią informaciją.
> pac package show --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Jūsų paketą sudaro šie failai, esantys aplanke <Projektas>\Bin\Trikčių šalinimo katalogas.
- <Aplankas> PackageName: aplanko pavadinimas yra toks pat, kaip ir tas, kurį pakeitėte paketo aplanko pavadinime atlikdami šio skyriaus 2.g veiksmą Pridėti pasirinktinį kodą. Šiame aplanke yra visi sprendimai, konfigūravimo duomenys, paprastieji failai ir jūsų paketo turinys.
Pastaba.
Galite matyti .NET aplanką (pvz., net472), kuriame yra pdpublish aplankas. Jūsų DLL ir kiti projekto falai yra pdpublish kataloge.
- <PackageName.DLL>: rinkinyje yra pasirinktinis jūsų paketo kodas. Pagal numatytuosius nustatymus, rinkinio pavadinimas yra toks pats, kaip jūsų projekto pavadinimas.
Diegti
Sukūrę paketą, jį galite įdiegti Dataverse egzemplioriuje naudodami Package Deployer įrankį arba „Windows PowerShell“ ar CLI komandą.
Norėdami visuotinai įdiegti įrankį Package Deployer pirmiausia atsisiųskite įrankį, kaip aprašyta kūrimo Dataverse talpinimo įrankius. Tada vadovaukitės išsamia informacija apie paketo diegimą straipsnyje Paketų diegimas naudojant Package Deployer arba "Windows" PowerShell.
Norėdami talpinti naudojant CLI, naudokite
pac package deploy
komandą.> pac package deploy --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Pastaba.
Norėdami paketą įdiegti paskirties aplinkoje naudodami CLI, pirma turite nustatyti autentifikavimo profilį ir pažymėti organizaciją. Daugiau informacijos: paketų autentifikavimo kūrimas, pac org pasirinkimas
Geriausia praktika
Toliau pateikti keli patarimai dėl geriausios praktikos dirbant su Package Deployer paketais.
Paketų kūrimas
Kurdami paketus kūrėjai turi:
- Įsitikinkite, kad pakuotės rinkiniai yra pasirašyti.
Paketų talpinimas
Visuotinai diegdami paketus Dataverse administratoriai turi:
- Reikalaukite pasirašytų paketų rinkinių , kad galėtumėte sekti surinkimą iki jo šaltinio.
- Prieš paleisdami pakuotę ant gamybos egzempliorius, patikrinkite pakuotę su priešgamybiniu egzemplioriumi, geriausia – veidrodiniu gamybos egzempliorius vaizdu.
- Prieš diegdami paketą, sukurkite atsarginę gamybos egzempliorius kopiją.