Sortu paketeak CRM Package Deployer tresnarentzako

Package Deployer-ek administratzaileei paketeak Microsoft Dataverse instantzietan hedatzeko aukera ematen die. Package Deployer paketea oinarri daiteke hurrengo edozeinekin edo guztiekin:

  • Dataverse soluzio-fitxategi bat edo gehiago.
  • Konfigurazioaren migrazio tresnako konfigurazio lauak edo bertatik esportatutako datu-fitxategia. Tresnari buruzko informazio gehiagorako, ikusi Mugitu konfigurazioko datuak instantzia eta erakundeen artean Konfigurazioa migratzeko tool tresnarekin.
  • Paketea Dataverse instantziara inplementatu baino lehenago, bitartean edo ondoren exekutatu daitekeen kodea pertsonalizatua.
  • Paketearen HTML eduki espezifikoa inplementazio prozesuaren hasieran edo amaieran bistara daitekeena. Eduki hau erabilgarria izan daiteke paketean inplementatutako soluzio eta fitxategien deskribapen bat eskaintzeko.

Oharra

Beste pakete mota bat dago plugin paketea. Pakete mota hori menpeko plugin-muntaietarako da eta ez dauka erlaziorik Package Deployer paketeekin.

Aurrebaldintzak

  • Ziurtatu paketean sartu nahi dituzun irtenbide eta fitxategi guztiak prest dituzula.
  • Visual Studio 2019 edo berriagoa, edo Visual Studio Code.

Prozesuaren informazio orokorra

Pakete bat sortzeko, jarraitu urrats hauek. Package Deployer

  • Sortu Visual Studio edo MSBuild proiektu bat
  • Gehitu irtenbideak eta bestelako fitxategiak proiektuari
  • Eguneratu emandako HTML fitxategiak (aukerakoa)
  • Zehaztu paketearen konfigurazio-balioak
  • Definitu zure paketerako kode pertsonalizatua
  • Eraiki eta zabaldu paketea

Urrats hauek xehetasunez deskribatzen dira artikulu honetan.

Sortu paketearen proiektua

Lehenengo urratsa paketerako Visual Studio edo MSBuild proiektu bat sortzea da. Horretarako, erabilgarri dauden bi tresna-luzapenetako bat izan behar duzu zure garapen-ordenagailuan instalatuta. Visual Studio Code erabiltzen baduzu, instalatu Microsoft Power Platform CLI. Bestela, Visual Studio 2019 edo berriagoa erabiltzen baduzu, instalatu Power Platform tresnak Visual Studio.

Hautatu beheko fitxa egokia nahi duzun tresnaren luzapena erabiliz proiektu bat nola sortu jakiteko. Bi tresnek proiektua antzeko formatuan ateratzen dute.

Exekutatu pac paketearen init komandoa sortzeko hasierako paketea. Informazio gehiago: pac paketea

pac package init help
pac package init --outputDirectory DeploymentPackage

Ondorioz, CLI irteerak behean agertzen diren karpetak eta fitxategiak ditu. "DeploymentPackage" karpetaren izena hemen erabili da adibide gisa.

C:.
└───DeploymentPackage
    │   DeploymentPackage.csproj
    │   PackageImportExtension.cs
    │
    └───PkgAssets
            ImportConfig.xml
            manifest.ppkg.json

Sortutako proiektuan, bilatu ImportConfig.xml konfigurazio fitxategia PkgAssets karpetan eta PackageImportExtension.cs fitxategian. Fitxategi hauek artikulu honetan geroago azaltzen den bezala aldatuko dituzu.

Gehitu pakete fitxategiak

Pakete-proiektu bat sortu ondoren, proiektu horri irtenbideak eta bestelako fitxategiak gehitzen has zaitezke.

CLI erabiltzean, kanpoko paketeak gehi ditzakezu, soluzioak eta erreferentziak zure pakete-proiekturako erabilita gehitu azpikomandoetako bat. Idatzi pac package help ikusteko azpikomandoen zerrenda. Gehi diezaiogun irtenbide bat gure paketeari.

> 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.

Konfiguratu paketea

Definitu paketearen konfigurazioa informazioa gehituz zure paketeari buruz ImportConfig.xml fitxategia proiektuan. Erabili beharreko elementu eta atributu baliodunen adibide eta deskribapen bat ikusteko, jo ImportConfig erreferentzia era.

Gehitu pertsonalizatutako kodea

Paketea ingurune batera inportatu aurretik, bitartean eta ondoren exekutatzen den kode pertsonalizatua gehi dezakezu. Hori egiteko, ondorengo argibideei jarraitu.

  1. Editatu PackageTemplate.cs (edo PackageImportExtension.cs) fitxategia proiektuaren erroko karpetan.

  2. C# fitxategian, zuk egin dezakezu:

    1. Sartu kode pertsonalizatua pakete hasiberriena zehaztapenean zehazteko InitializeCustomExtension.

      Metodo hau erabil daiteke paketeak exekutatzen dituzten bitartean exekuzio parametroak erabiltzeko. Garatzaile gisa, exekuzio parametroetarako edozein euskarri gehitu diezazuke paketean RuntimeSettings propietateak prozesatzeko kodea baduzu erabiltzailearen sarreran oinarrituta.

      Adibidez, adibideko kode hau deitzen den exekuzio parametroa gaitzen da SkipChecks Bi balio posible dituen paketearentzat: egia edo gezurra. Lagin-kodea egiaztatzen du erabiltzaileak exekutatzen ari den bitartean parametroren bat zehaztu badu Package Deployer (komando-lerroa edo PowerShell erabiliz), eta, ondoren, informazioa prozesatzen du. Paketeak exekutatzen dituen erabiltzaileak ez badu exekuzio-parametrorik zehaztu, balioa izango du RuntimeSettings jabetza nulua izango da.

      public override void InitializeCustomExtension()  
      {
        // 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");
        }  
      } 
      

      Kode horrek gaitzen dio administratzaileari komando lerroa edo Inportazio-CrmPackage cmdlet, exekutatzen ari zaren bitartean segurtasun egiaztapenak saihestu nahi dituzun zehazteko Package Deployer paketea inportatzeko tresna. Informazio gehiago: Deploy paketeak Package Deployer eta PowerShell

    2. Sartu kode pertsonalizatuak, irtenbideak inprobisazio metodoaren definizioan inportatu aurretik exekutatu PreSolutionImport Xede batean zehaztutako irtenbidea eguneratzen ari zaren bitartean pertsonalizazioak mantendu edo gainidatzi behar diren zehazteko Dataverse instantzia, eta ea automatikoki pluginak eta laneko fluxuak aktibatu behar diren.

    3. Erabili RunSolutionUpgradeMigrationStep -ren gainidazketa metodoaren definizioa datuak eraldatzeko edo soluzio baten bi bertsioen artean eguneratzeko. Metodo hau deitzen da inportatzen ari zaren soluzioa helburu Dataverse instantzian badago soilik.

      Funtzio honek parametro hauek espero ditu:

      Parametroa Deskribapenak
      solutionName Soluzioaren izena
      oldVersion Soluzio zaharraren bertsio-zenbakia
      newVersion Soluzio berriaren bertsio-zenbakia
      oldSolutionId Soluzio zaharraren GUID.
      newSolutionId Soluzio berriaren GUID.
    4. Gainidatzi metodoa OverrideSolutionImportDecisionUserRequestedImportAction enumerazioa itzultzeko, irtenbide baten inportazioa saltatu, eguneratu edo eguneratuko den (lehenetsia) kontrolatuz.

      public override UserRequestedImportAction OverrideSolutionImportDecision(
        string solutionUniqueName, Version organizationVersion,
        Version packageSolutionVersion, Version inboundSolutionVersion,
        Version deployedSolutionVersion, ImportAction systemSelectedImportAction )
      {
        return systemSelectedImportAction == 
            ImportAction.Import ? UserRequestedImportAction.ForceUpdate
            : base.OverrideSolutionImportDecision(solutionUniqueName, organizationVersion,
            packageSolutionVersion, inboundSolutionVersion, deployedSolutionVersion,
            systemSelectedImportAction);
      }
      
    5. Idatzi pertsonalizazio kodea exekutatzeko soluzioaren inportatzea osatu aurretik gainidatzi definizioan BeforeImportStage metodoan. Laginaren datuak eta fitxategiak planoan zehaztutako irtenbideetarako ImportConfig.xml fitxategia inportatu egiten da irtenbideen inportazioa amaitu aurretik.

    6. Gainidatzi konfigurazio-datuak inportatzeko unean hautatutako hizkuntza OverrideConfigurationDataFileLanguage-ren gainidazketa-metodoaren definizioa erabiliz. Zehaztutako hizkuntzaren tokiko ezarpenen IDa (LCID) paketean eskuragarri dauden hizkuntzen zerrendan aurkitzen ez bada, lehenetsitako datu-fitxategia inportatzen da.

      Konfigurazio datuetarako erabilgarri dauden hizkuntzak zehazten dituzu <cmtdatafiles> nodoan ImportConfig.xml fitxategia. Lehenetsitako konfigurazio - datuak inportatzeko fitxategia zehazten da crmmigdataimportfile atributuan ImportConfig.xml fitxategia.

      Datuen egiaztapenak saltatzea (OverrideDataImportSafetyChecks = true) eraginkorra izan daiteke hemen helburuko instantziak daturik ez duela ziur bazaude. Dataverse

    7. Idatzi pertsonalizazio kodea exekutatzeko soluzioaren inportatzea osatu ondoren gainidatzi definizioan AfterPrimaryImport>metodoan. Soluzioen inportazioa hasi aurretik lehenago inportatu ez ziren gainerako fitxategi lauak orain inportatzen dira.

    8. Aldatu zure pakete-karpetaren izen lehenetsia nahi duzun pakete-izenera. Horretarako, aldatu PkgFolder (edo PkgAssets) karpetaren izena Solution Explorer panelean, eta editatu itzulitako balioa GetImportPackageDataFolderName propietatearen azpian.

      public override string GetImportPackageDataFolderName  
      {  
          get  
          {  
              // WARNING this value directly correlates to the folder name in Solution 
              // Explorer where the ImportConfig.xml and sub content is located.  
              // Changing this name requires that you also change the correlating name
              // in Solution Explorer.
              return "PkgFolder";  
          }  
      }  
      
    9. Aldatu paketearen izena itzultzearen balioa editatuz GetNameOfImport Jabetza.

      public override string GetNameOfImport(bool plural)  
      {  
          return "Package Short Name";  
      }  
      

      Itzulitako balio hau Dynamics 365 Package Deployer morroiaren paketearen hautapen-orrian agertzen den paketearen izena da.

    10. Aldatu paketearen deskribapena itzultzearen balioa editatuz GetImportPackageDescriptionText Jabetza.

      public override string GetImportPackageDescriptionText  
      {  
          get { return "Package Description"; }  
      }  
      

      Itzulitako balio hau paketearen hautaketa orrian paketearen izenaren ondoan agertzen den paketearen deskribapena da Package Deployer morroian.

    11. Aldatu paketearen izen luzea itzultzearen balioa editatuz GetLongNameOfImport Jabetza.

      public override string GetLongNameOfImport  
      {  
          get { return "Package Long Name"; }  
      }  
      

      Paketearen izen luzea hurrengo orrian agertzen da instalatu beharreko paketea hautatu ondoren.

  3. Gainera, hurrengo funtzioa eta aldagaiak eskuragarri daude paketean:

    Izena Mota Deskribapenak
    CreateProgressItem(String) Function Erabiltzaileen interfazean (UI) aurrerapen berri bat sortzeko erabiltzen da.
    RaiseUpdateEvent(String, ProgressPanelItemStatus) Function Deiak sortutako aurrerapena eguneratzeko erabiltzen da CreateProgressItem(String).

    ProgressPanelItemStatus balio hauek dituen enum bat da:

    Lanean = 0
    Osatuta = 1
    Huts egin du = 2
    Abisua = 3
    Ezezaguna = 4
    RaiseFailEvent(String, Exception) Function Salbuespen mezuarekin uneko egoera inportazioan huts egiteko erabiltzen da.
    IsRoleAssociatedWithTeam(Guid, Guid) Function Eginkizuna zehaztutako talde batekin lotzen den ala ez zehazteko erabiltzen da.
    IsWorkflowActive(Guid) Function Erabilitako zehaztutako lan-fluxua aktiboa den zehazteko erabiltzen da.
    PackageLog Klaseko erakuslea Paketearen hasierako erregistro-interfazera erakuslea da. Interfaze hau pakete batek erabiltzen du paketeak erregistratzeko fitxategian mezuak eta salbuespenak erregistratzeko.
    RootControlDispatcher Propietatea Paketeen hedapenean zure kontrolak bere UI errendatzeko aukera ematen duen banatzailearen interfaze bat da. Erabili interfaze hau edozein UI elementuak edo komandoak estaltzeko. Garrantzitsua da aldagai hau erabili aurretik balio nuluak dituen egiaztatzea, baliteke balio batera ezarrita ez egotea.
    CrmSvc Propietatea CrmServiceClient klasearen erakuslea, pakete batek paketearen barrutik Dynamics 365 heltzeko aukera ematen duena. Erabili erakusle hau SDK metodoak eta bestelako ekintzak gainidazteko metodoetan gauzatzeko.
    DataImportBypass Propietatea Zehaztu Dynamics 365 Package Deployer-ek datuak inportatzeko eragiketa guztiak saltatzen dituen ala ez, hala nola Dataverse lagin-datuak, fitxategi lauen datuak eta Konfigurazio-migrazio tresnatik esportatutako datuak. Zehaztu egia edo faltsua. Lehenetsia da false.
    OverrideDataImportSafetyChecks Propietatea Zehaztu Dynamics 365 Package Deployer-ek segurtasun-egiaztapen batzuk saihesten dituen ala ez, eta horrek inportazioaren errendimendua hobetzen laguntzen du. Zehaztu true edo false. Lehenetsia da false.

    Propietate hau true -ra ezarri beharko zenuke helburuko Dataverse instantziak daturik ez badu soilik.
  4. Gorde zure proiektua. Hurrengo pausoa zure paketea eraikitzea da.

Eraiki eta inplementatu

Hurrengo atalek pakete bat nola eraiki eta zabaldu azaltzen dute.

Konpilazioa

Paketea nola eraiki azaltzen da behean, erabiltzen ari zaren tresnaren arabera.

CLIrekin sortutako pakete bat eraikitzeko, .csproj fitxategia kargatu dezakezu Visual Studio-n, baina horren ordez dotnet komandoa eta MSBuild erabiliko ditugu. Beheko adibideak suposatzen du lan-direktorioak *.csproj fitxategia duela.

> dotnet publish

DeploymentPackage -> C:\Users\peter\Downloads\DeploymentPackage\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip

Aukeran, eraikitako paketearen xehetasunak ikus ditzakezu.

> pac package show --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip

Zure paketea egina dago hurrengo fitxategiekin azpian <Proiektua>\Bin\Debug karpeta.

  • <PackageName> karpeta: Karpetaren izena atal honetako 2.g urratsean paketearen karpetaren izenerako aldatu zenuen berdina da Gehitu kode pertsonalizatua. Karpeta horrek barne hartzen ditu soluzio guztiak, konfigurazio-datuak, fitxategi lauak eta zure paketearentzako edukiak.

Oharra

Baliteke .NET karpeta bat (adib., net472) ikustea, pdpublish karpeta duena. Zure DLL eta beste proiektu-fitxategiak pdpublish karpeta horretan daude.

  • <PackageName>.dll: Muntaiak zure paketearen kode pertsonalizatua dauka. Modu lehenetsian, muntaiaren izena zure proiektu-izenaren bera da.

Inplementatu

Pakete bat sortu ondoren, Dataverse instantzian hedatu dezakezu Package Deployer tresna, Windows PowerShell edo CLI komando bat erabiliz.

  • Inplementatzeko erabili Package Deployer tresna, lehenik, deskargatu tresna deskribatu bezala Dataverse inplementazio tresnak. Jarraitu paketeen hedapenari buruzko informazio zehatza Deploy paketeak Package Deployer edo PowerShell Windows artikuluan.

  • Inplementatzeko CLI erabilita, erabili pac package deploy komandoa.

    > pac package deploy --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
    

    Oharra

    CLI erabiliz pakete bat helburu-ingurune batera zabaltzeko, lehenik autentifikazio-profil bat konfiguratu eta erakunde bat hautatu behar duzu. Informazio gehiago: pac auth sortu, pac org hautatu

Praktika onenak

Zerrendatuta beheran daude jardunbide egokien aholku batzuk jarraitzeko Package Deployer paketeekin lan egitean.

Paketeak sortzae

Paketeak sortzerakoan, garatzaileek:

  • Ziurtatu paketeen muntaketak sinatuta daudela.

Inplementatzea paketeak

Paketeak inplementatzeko orduan, Dataverse administratzaileek ondorengo jarraibideak bete behar dituzte:

  • Eskatu pakete-muntaketak sinatuta muntatze bat bere iturbururaino jarraitzeko.
  • Probatu paketea aurre-ekoizpen instantzia batean, hobe ekoizpen instantziaren ispilu-irudi batean, ekoizpen instantzia batean exekutatu aurretik.
  • Egin ekoizpen instantziaren babeskopia paketea zabaldu aurretik.

Ikusi ere bai

Soluzioen paketatzaile tresna