Package Deployer gjør det mulig for administratorer å distribuere pakker på Microsoft Dataverse-forekomster. En Package Deployer-pakke kan bestå av enhver eller alle av følgende:
Egendefinert kode som kan kjøre før, samtidig eller etter at pakken distribueres til Dataverse-forekomsten.
HTML-innhold som er spesifikk for pakken som kan vises i begynnelsen og mot slutten av distribusjonsprosessen. Dette innholdet kan være nyttig for å gi en beskrivelse av løsninger og filer som distribueres i pakken.
Obs!
Det finnes en annen pakketype kalt en programtilleggspakke. Denne pakketypen er for programtilleggsavhengige samlinger og har ingen relasjon til Package Deployer-pakker.
Forutsetning
Kontroller at du har alle løsningene og alle de andre filene klare som du vil ha med i pakken.
Visual Studio 2019 eller nyere eller Visual Studio Code.
Prosessoversikt
Utfør følgende trinn for å opprette en Package Deployer-pakke.
Opprett et Visual Studio- eller MSBuild-prosjekt
Legg til løsninger og andre filer i prosjektet
Oppdater angitte HTML-filer (valgfritt)
Angi konfigurasjonsverdier for pakken
Definer egendefinert kode for pakken
Bygg og distribuer pakken
Denne fremgangsmåten er beskrevet nærmere i denne artikkelen.
Opprett et pakkeprosjekt
Det første trinnet er å opprette et Visual Studio- eller MSBuild-prosjekt for pakken. For å kunne gjøre dette må du ha én av to tilgjengelige verktøyutvidelser installert på utviklingsdatamaskinen. Hvis du bruker Visual Studio Code, installerer du Microsoft Power Platform CLI. Ellers, hvis du bruker Visual Studio 2019 eller senere, installerer du Power Platform Tools for Visual Studio.
Velg den aktuelle fanen nedenfor for å finne ut hvordan du oppretter et prosjekt med ønsket verktøyutvidelse. Begge verktøyene gir prosjektet et lignende format.
I det opprettede prosjektet finner du ImportConfig.xml-konfigurasjonsfilen i PkgAssets-mappen og PackageImportExtension.cs-filen. Du endrer disse filene som beskrevet senere i denne artikkelen.
Du kan opprette et Visual Studio-prosjekt ved å bruke Power Platform-løsningsmalen og senere legge til et pakkeprosjekt ved å bruke malen Power Platform-pakkedistribusjonsprosjekt, eller opprette et prosjekt direkte ved å bruke Power Platform-prosjektmalen for pakkedistribusjon.
Obs!
Ikke velg pakkemalen for Power Platform. Den malen er for programtilleggspakker.
Påfølgende Visual Studio-løsning og -prosjekt inneholder mappene og filene som vises nedenfor. Navnet «Deployment-package» ble brukt her som eksempel. Innholdet i Innhold-mappen vises ikke her for korthets skyld.
I det opprettede prosjektet finner du ImportConfig.xml-konfigurasjonsfilen i PkgFolder-mappen og PackageTemplate.cs-filen. Du endrer disse filene som beskrevet senere i denne artikkelen.
Når du bruker CLI, kan du legge til eksterne pakker, løsninger og referanser i pakkeprosjektet ved hjelp av en av underkommandoene add. Angi pac package help for å vise listen over underkommandoer. La oss legge til en løsning i pakken.
Bash
> 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.
I Solutions Explorer-ruten legger du til Dataverse-løsningene og andre filer i PkgFolder-mappen. HTML-filer hører til i Innhold-mappen. Mer om dette HTML-innholdet senere.
Angi Kopier alltid for Kopier til utdatakatalog i Egenskaper-ruten for hver fil du legger til. Når du angir denne verdien, sikrer du at filene er tilgjengelige i den genererte pakken.
Oppdater deretter de HTML-språkspesifikke filene.
I Løsningsutforsker-ruten utvider du PkgFolder>Innhold>en-us. Finn to mapper som kalles EndHTML og WelcomeHTML. Disse mappene inneholder HTML-filer og tilknyttede filer som gjør at du kan vise informasjon (til brukeren) på slutten og i begynnelsen av pakkedistribusjonsprosessen. Rediger filene i HTML-mappen i disse mappene for å legge til informasjon du vil vise for pakken.
Du kan også legge til HTML-filer i pakken på andre språk, slik at innholdet i HTML-koden vises på språket basert på de nasjonale innstillingene i brukerens datamaskin. Slik gjør du det:
Opprett en kopi av en-us-mappen under PkgFolder>Innhold.
Endre navnet på den kopierte mappen til det aktuelle språket. Du kan for eksempel endre navnet for det spanske språket til es-ES.
Endre innholdet i HTML-filene for å legge til spansk innhold.
Konfigurer pakken
Definer pakkekonfigurasjonen ved å legge til informasjon om pakken i filen ImportConfig.xml i prosjektet. Se ImportConfig-referanse for et eksempel og beskrivelser av de gyldige elementene og attributtene som skal brukes.
Legg til egendefinert kode
Du kan legge til egendefinert kode som kjører før, under og etter at pakken er importert til et miljø. Følg instruksjonene nedenfor for å gjøre dette.
Rediger filen PackageTemplate.cs (eller PackageImportExtension.cs) i rotmappen for prosjektet.
I C#-filen kan du gjøre følgende:
Angi en egendefinert kode som skal kjøres når pakken er initialisert i definisjonen for overstyringsmetode for InitializeCustomExtension.
Denne metoden kan brukes til å la brukere bruke kjøretidsparameterne under kjøring av en pakke. Som utvikler kan du legge til støtte for alle kjøretidsparametere i pakken ved å bruke RuntimeSettings-egenskapen så lenge du har kode som behandler den basert på brukerinndataene.
Eksempelkoden nedenfor aktiverer for eksempel en kjøretidsparameter kalt SkipChecks for pakken som har to mulige verdier: true eller false. Eksempelkoden kontrollerer om brukeren har angitt eventuelle kjøretidsparametere under kjøring av Package Deployer (enten ved hjelp av kommandolinjen eller PowerShell), og behandler deretter informasjonen tilsvarende. Hvis det ikke er angitt en kjøretidparameter for brukeren mens pakken kjører, vil verdien av RuntimeSettings-egenskapen være null.
C#
publicoverridevoidInitializeCustomExtension()
{
// 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");
}
Angi en egendefinert kode som skal kjøres før løsningene importeres i definisjonen av overstyringsmetode for PreSolutionImport for å angi om du vil vedlikeholde eller overskrive tilpassinger mens du oppdaterer den angitte løsningen i en målforekomst av Dataverse, og om du automatisk vil aktivere plugin-moduler og arbeidsflyter.
Bruk definisjonen for overstyringsmetoden for RunSolutionUpgradeMigrationStep til å utføre datatransformasjon eller oppgradering mellom to versjoner av en løsning. Denne metoden kalles bare hvis løsningen du importerer, allerede finnes i Dataverse-målforekomsten.
Denne funksjonen forventer følgende parametere:
Parameter
Beskrivelse
solutionName
Navnet på løsningen
oldVersion
Versjonsnummer for den gamle løsningen
newVersion
Versjonsnummer for den nye løsningen
oldSolutionId
GUID for den gamle løsningen.
newSolutionId
GUID for den nye løsningen.
Angi en egendefinert kode som skal kjøres før løsningsimporten er fullført i overstyringsdefinisjonen for BeforeImportStage-metoden. Eksempeldataene og noen flate filer for løsninger som er angitt i ImportConfig.xml-filen, importeres før løsningsimporten fullføres.
Overstyr det valgte språket for konfigurasjonsdataimport ved hjelp av definisjonen av overstyringsmetode for OverrideConfigurationDataFileLanguage. Hvis angitt ID for nasjonale innstillinger (LCID) for det angitte språket ikke finnes i listen over tilgjengelige språk i pakken, importeres standard datafil.
Du angir tilgjengelige språk for konfigurasjonsdataene i <cmtdatafiles>-noden i ImportConfig.xml-filen. Standard importfil for konfigurasjonsdata er angitt i crmmigdataimportfile-attributtet i ImportConfig.xml-filen.
Det kan være effektiv å hoppe over datakontroller (OverrideDataImportSafetyChecks = true) her hvis du er sikker på at Dataverse-målforekomsten ikke inneholder data.
Angi en egendefinert kode som skal kjøres etter at løsningsimporten er fullført i overstyringsdefinisjonen for AfterPrimaryImport>-metoden. De gjenværende flate filene som ikke ble importert tidligere før løsningsimporten startet, blir importert nå.
Endre standardnavnet på pakkemappen til pakkenavnet du vil ha. Dette gjør du ved å gi nytt navn til mappen PkgFolder (eller PkgAssets) i Løsningsutforsker-ruten og deretter redigere returverdien under egenskapen GetImportPackageDataFolderName.
C#
publicoverridestring 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";
}
}
Endre pakkenavnet ved å redigere returverdien under GetNameOfImport-egenskapen.
C#
publicoverridestringGetNameOfImport(bool plural)
{
return"Package Short Name";
}
Denne returnerte verdien er navnet på pakken som vises på pakkeutvalgssiden i Dynamics 365 Package Deployer-veiviseren.
Endre pakkebeskrivelsen ved å redigere returverdien under GetImportPackageDescriptionText-egenskapen.
C#
publicoverridestring GetImportPackageDescriptionText
{
get { return"Package Description"; }
}
Denne returnerte verdien er pakkebeskrivelsen som vises sammen med pakkenavnet på pakkeutvalgssiden i Package Deployer-veiviseren.
Endre det lange pakkenavnet ved å redigere returverdien under GetLongNameOfImport-egenskapen.
C#
publicoverridestring GetLongNameOfImport
{
get { return"Package Long Name"; }
}
Pakkens lange navn vises på neste side etter at du har valgt pakken som skal installeres.
I tillegg er følgende funksjoner og variabler tilgjengelige for pakken:
En peker til grensesnittet for initialisert logging for pakken. Dette grensesnittet brukes av en pakke til å logge meldinger og unntak til pakkeloggfilen.
Et fordelingsgrensesnitt som brukes til å tillate at kontrollen gjengir sitt eget brukergrensesnitt under pakkedistribusjon. Bruk dette grensesnittet til å pakke alle grensesnittelementer eller kommandoer. Det er viktig å kontrollere denne variabelen for nullverdier før du bruker den, fordi det kan hende at den ikke er satt til en verdi.
En peker til CrmServiceClient-klasse som gjør at en pakke kan kommunisere med Dynamics 365 innenfra pakken. Bruk denne pekeren til å utføre SDK-metoder og andre handlinger i overstyrte metoder.
Angi om Dynamics 365 Package Deployer skal hoppe over alle dataimportoperasjoner, for eksempel import av Dataverse-eksempeldata, flate fildata og data eksportert fra verktøyet for konfigurasjonsoverføring. Angi usann eller usann. Standard er false.
Angi om Dynamics 365 Package Deployer skal hoppe over noen av sikkerhetskontrollene, noe som bidrar til å forbedre importytelsen. Angi true eller false. Standard er false.
Du bør bare angi denne egenskapen til true hvis Dataverse-målforekomsten ikke inneholder noen data.
Lagre prosjektet. Det neste trinnet er å bygge pakken.
Bygg og distribuer
De følgende delene beskriver hvordan du bygger og distribuerer en pakke.
Build
Å bygge pakken er beskrevet nedenfor avhengig av hvilket verktøy du bruker.
Hvis du vil bygge en pakke opprettet med CLI, kan du laste inn .csproj-filen i Visual Studio, men i stedet skal vi bruke DotNet-kommandoen og MSBuild. Eksemplet nedenfor forutsetter at arbeidsmappen inneholder filen *.csproj.
Du kan eventuelt se på detaljene for den bygde pakken.
Bash
> pac package show --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Trykk på F5 i Visual Studio eller velg Bygg>Bygg løsning for å bygge pakken.
Pakken din består av følgende filer i mappen <Project>\Bin\Debug.
<Pakkenavn-mappe>: Mappenavnet er det samme som det du endret for pakkemappenavnet i trinn 2.g i denne delen Legg til egendefinert kode. Denne mappen inneholder alle løsninger, konfigurasjonsdata, flate filer og alt innhold for pakken.
Obs!
Det kan hende at du ser en .NET-mappe (for eksempel net472) som inneholder en pdpublish-mappe. DLL-filen og andre prosjektfiler ligger i denne pdpublish-mappen.
<PackageName.DLL>: Samlingen inneholder den egendefinerte koden for pakken. Som standard er navnet på samlingen det samme som prosjektnavnet.
Distribuere
Etter at du har opprettet en pakke, kan du distribuere den i Dataverse-forekomsten ved å bruke Package Deployer-verktøyet, Windows PowerShell eller en CLI-kommando.
Hvis du vil distribuere en pakke i et målmiljø ved hjelp av CLI, må du først konfigurere en godkjenningsprofil og velge en organisasjon. Mer informasjon: pac auth create, pac org select
Beste fremgangsmåter
Nedenfor finner du noen anbefalte fremgangsmåter du kan følge når du arbeider med Package Deployer-pakker.
Opprettelse av pakker
Når utviklere oppretter pakker, må de gjøre følgende:
Sørg for at pakkesamlinger er signert.
Distribusjon av pakker
Under distribusjon av pakker må Dataverse-administratorer gjøre følgende:
Insister på signerte pakkesamlinger , slik at du kan spore en samling tilbake til kilden.
Test pakken på en førproduksjonsforekomst, fortrinnsvis et speilbilde av produksjonsforekomsten, før du kjører den på en produksjonsforekomst.
Sikkerhetskopier produksjonsforekomsten før du distribuerer pakken.