Делите путем


Креирање пакета за алатку Package Deployer

Package Deployer омогућава администраторима примену пакета на инстанцама услуге Microsoft Dataverse. Package Deployer пакет може да се састоји од било чега следећег:

  • Једна или више датотека Dataverse решења.
  • Просте датотеке или извезена датотека конфигурације из алатке Миграција конфигурације. За више информација о алатки, погледајте чланак Премештање података о конфигурацији између инстанци и организација помоћу алатке Миграција конфигурације.
  • Прилагођени кôд који може да се покреће пре, током или после примене пакета у Dataverse инстанци.
  • HTML садржај карактеристичан за пакет који може бити приказан на почетку и на крају процеса примене. Овај садржај може бити користан за пружање описа решења и датотека примењених у пакету.

Белешка

Постоји још један тип пакета који се зове пакет додатних компоненти. Таква врста пакета је за зависне склопове додатних компоненти и нема никакав однос са Package Deployer пакетима.

Предуслови

  • Проверите да ли сте спремили сва решења и друге датотеке које желите да укључите у пакет.
  • Visual Studio 2019 или касније, или Visual Studio Цоде.

Преглед процеса

Да бисте креирали Package Deployer пакет, извршите следеће кораке.

  • Креирајте Visual Studio или MSBuild пројекат
  • Додајте решење и друге датотеке пројекту
  • Ажурирајте обезбеђене HTML датотеке (опционално)
  • Наведите вредности конфигурације за пакет
  • Дефинишите прилагођени кôд за пакет
  • Израдите и примените пакет

Ови кораци су детаљно описани у овом чланку.

Креирајте пројекат за пакет

Први корак је креирање Visual Studio или MSBuild пројекта за пакет. Да бисте то урадили, на развојном рачунару морате имати инсталирано једно од два доступна проширења алатке. Ако користите Visual Studio Code, инсталирајте Microsoft Power Platform CLI. У супротном, ако користите Visual Studio КСНУМКС или касније, инсталирајте Power Platform алате за Visual Studio.

Изаберите одговарајућу картицу испод да бисте сазнали како да креирате пројекат користећи жељено проширење алатке. Обе алатке излазе из пројекта у сличном формату.

Покрените команду pac package init да бисте креирали почетни пакет. Још информација: pac package

pac package init help
pac package init --outputDirectory DeploymentPackage

Резултујући CLI излаз садржи фасцикле и датотеке приказане испод. Назив фасцикле „DeploymentPackage“ је овде коришћен као пример.

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

У креираном пројекту пронађите ИмпортЦонфиг.xмл конфигурациону датотеку у фолдеру ПкгАссетс и #пии_ијфидејз фајлу. Ви ћете изменити ове фајлове као што је описано касније у овом чланку.

Додајте датотеке пакета

Када креирате пројекат пакета, можете почети да додајете решења и друге датотеке том пројекту.

Када користите CLI, можете да додате спољне пакете, решења и референце на пројекат пакета помоћу једне од поткоманди add. Унесите pac package help да бисте видели листу поткоманди. Хајде да додамо решење у наш пакет.

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

Конфигуришите пакет

Дефинишите конфигурацију пакета додавањем информација о вашем пакету у датотеци ImportConfig.xml у пројекту. Погледајте ИмпортЦонфиг Референце за пример и описе важећих елемената и атрибута за коришћење.

Додајте прилагођени кôд

Можете да додате прилагођени кôд који се извршава пре, током и након увоза пакета у окружење. Да бисте то урадили, следите следећа упутства.

  1. Уредите датотеку PackageTemplate.cs (или PackageImportExtension.cs) у основној фасцикли пројекта.

  2. У C# датотеци можете да урадите следеће:

    1. Унесите прилагођени кôд који ће се извршити када се пакет покрене дефиницији метода за измену InitializeCustomExtension.

      Ова метода се може користити за омогућавање корисницима да користе параметре извођења током извођења пакета. Као програмер, можете у свој пакет додати подршку за било који параметар извршавања користећи својство RuntimeSettings док год имате кôд за обраду на основу корисничког уноса.

      На пример, следећи пример кода омогућава параметар извођења који се зове SkipChecks за пакет који има две могуће вредности: true или false. Пример кода проверава да ли је корисник навео било какве параметре извођења током извођења алатке Package Deployer (било коришћењем командне линије или платформе PowerShell), а затим у складу с тим обрађује информације. Ако корисник током извођења пакета не наведе ниједан параметар извођења, својство RuntimeSettings ће бити без вредности.

      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");  
      }  
      

      Овај кôд омогућава администратору да користи командну линију или cmdlet команду Import-CrmPackage да одреди да ли да прескочи безбедносне провере током покретања алатке Package Deployer за увоз пакета. Још информација: Примена пакета коришћењем алатке Package Deployer и платформе Windows PowerShell

    2. Унесите прилагођени кôд који треба извршити пре увоза решења у дефиницији замене методе PreSolutionImport да бисте одредили да ли треба да одржавају или замене прилагођавања током ажурирања наведеног решења у циљној Dataverse инстанци и да ли треба аутоматски активирати додатне компоненте и токове посла.

    3. Користите дефиницију методе преписивања да извршите трансформацију RunSolutionUpgradeMigrationStep података или надоградњу између две верзије решења Овај метод се позива само ако је решење које увозите већ присутно у циљној Dataverse инстанци.

      Ова функција очекује следеће параметре:

      Параметар Опис
      solutionName Назив решења
      oldVersion Број верзије старог решења
      newVersion Број верзије новог решења
      oldSolutionId GUID старог решења.
      newSolutionId GUID новог решења.
    4. Унесите прилагођени кôд који ће се извршити пре него што се доврши увоз решења у дефиницији замене методе BeforeImportStage. Подаци примера и неке просте датотеке за решења наведена у датотеци ImportConfig.xml се увозе пре него што се увоз решења доврши.

    5. Премостити тренутно изабрани језик за увоз конфигурационих података користећи дефиницију OverrideConfigurationDataFileLanguage методе премостивања. Ако се наведени ИД језика (ЛЦИД) наведеног језика не нађе на листи доступних језика у пакету, подразумевани фајл са подацима се увози.

      Можете навести доступне језике за податке конфигурације у чвору <cmtdatafiles> у датотеци ImportConfig.xml. Подразумевана датотека за увоз података конфигурације наведена је у атрибуту crmmigdataimportfile у датотеци ImportConfig.xml.

      Прескакање провере података ( OverrideDataImportSafetyChecks = истина) може бити ефикасно овде ако сте сигурни да циљна Dataverse инстанца не садржи никакве податке.

    6. Унесите прилагођени кôд који ће се извршити након што се доврши увоз решења у дефиницији замене методе AfterPrimaryImport>. Преостали равни фајлови који нису увезени раније, пре него што је почео увоз решења, су увезени сада.

    7. Промените подразумевани назив фасцикле пакета у назив пакета који желите. Да бисте то учинили, преименујте фасциклу PkgFolder(или PkgAssets) у окну Истраживач решења, а затим измените повратну вредност испод својства GetImportPackageDataFolderName.

      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";  
      }  
      }  
      
    8. Промените име пакета тако што ћете уредити повратну вредност испод својства GetNameOfImport.

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

      Ова враћена вредност је име вашег пакета који се појављује на страници за избор пакета у чаробњаку Дyнамицс 365 Package Deployer .

    9. Промените опис пакета тако што ћете уредити повратну вредност испод својства GetImportPackageDescriptionText.

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

      Ова враћена вредност је опис пакета који се појављује заједно са именом пакета на страници за избор пакета у чаробњаку Package Deployer .

    10. Промените дуги назив пакета тако што ћете уредити повратну вредност испод својства GetLongNameOfImport.

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

      Дуги назив пакета се приказује на следећој страници након што сте изабрали пакет за инсталацију.

  3. Поред тога, у пакету су доступне следеће функције и променљиве:

    Назив Тип Опис
    CreateProgressItem(String) Function Користи се за креирање нове ставке напретка у корисничком интерфејсу (UI).
    RaiseUpdateEvent(String, ProgressPanelItemStatus) Function Користи се за ажурирање напретка креираног позивом CreateProgressItem(String).

    ProgressPanelItemStatus је енум са следећим вредностима:

    Working = 0
    Complete = 1
    Failed = 2
    Warning = 3
    Unknown = 4
    RaiseFailEvent(String, Exception) Function Користи се за неуспех увоза тренутног статуса са поруком о изузимању.
    IsRoleAssoicatedWithTeam(Guid, Guid) Function Користи се за утврђивање да ли је улога повезана са одређеним тимом.
    IsWorkflowActive(Guid) Function Користи се за утврђивање да ли је одређени ток посла активан.
    PackageLog Показивач класе Показивач на покренути интерфејс за евидентирање пакета. Овај интерфејс се користи у пакету за евидентирање порука и изузетака у датотеци евиденције пакета.
    RootControlDispatcher Својство Ово је интерфејс за диспечера који се користи како би контрола могла да прикаже сопствени кориснички интерфејс током примене пакета. Користите овај интерфејс да обухватите све елементе или команде корисничког интерфејса. Важно је проверити ову променљиву за нулл вредности пре него што је користите јер можда није подешена на вредност.
    CrmSvc Својство Показивач на класу CrmServiceClient која омогућава пакету да се обраћа систему Dynamics 365 из пакета. Користите овај показивач за извршавање SDK метода и других радњи у замењеним методама.
    DataImportBypass Својство Наведите да ли Dynamics 365 Package Deployer прескаче све операције увоза података, као што је увоз Dataverse пробних података, података простих датотека и података извезених из алатке Миграција конфигурације. Наведите „true“ или „false“. Подразумевано је false.
    OverrideDataImportSafetyChecks Својство Наведите да ли Дyнамицс 365 Package Deployer заобилази неке од својих безбедносних провера, што помаже у побољшању перформанси увоза. Наведите true или false. Подразумевано је false.

    Требало би да подесите ову особину само true ако циљна Dataverse инстанца не садржи никакве податке.
  4. Сачувајте пројекат. Следећи корак је да изградите пакет.

Изградите и примените

Следећи одељци описују како изградити и применити пакет.

Прављење

Изградња вашег пакета је описана у наставку у зависности од тога који алат користите.

Да бисте изградили пакет креиран помоћу ЦЛИ-а, можете учитати .цспрој датотеку Visual Studio, али уместо тога ћемо користити дотнет команду и МСБуилд. Пример у наставку претпоставља да радни директоријум садржи датотеку *.csproj.

> dotnet publish

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

Опционално можете погледати детаље изграђеног пакета.

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

Пакет сачињавају следеће датотеке испод фасцикле <Project>\Bin\Debug.

  • <ПацкагеНаме > фолдер : Име фасцикле је исто као и оно које сте променили за име фасцикле пакета у корак КСНУМКС.г овог одељка Додајте прилагођени код. Ова фасцикла садржи сва решења, податке конфигурације, просте датотеке и садржај пакета.

Белешка

Можда ћете видети фасциклу .NET (нпр. net472) која садржи фасциклу pdpublish. DLL и друге датотеке пројекта се налазе у фасцикли pdpublish.

  • <ПацкагеНаме > .длл : Скупштина садржи прилагођени код за ваш пакет. Назив склопа је подразумевано исти као и назив вашег пројекта.

Примена

Када креирате пакет, можете га применити на Dataverse инстанцу користећи алатку Package Deployer, Windows PowerShell или CLI команду.

  • Да бисте је применили помоћу алатке Package Deployer, прво преузмите алатку као што је описано у Dataverse алаткама за развој. Затим пратите детаљне информације о распоређивању пакета у чланку Деплои пакете користећи Package Deployer или Виндовс ПоверСхелл.

  • Да бисте је применили помоћу CLI ,користите команду pac package deploy.

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

    Белешка

    Да бисте применили пакет у циљно окружење помоћу CLI, прво морате да подесите профил потврде идентитета и изаберете организацију. Још информација: pac auth create, pac org select

Најбољи примери из праксе

У наставку је наведено неколико најбољих савета за вежбање које треба следити приликом рада са Package Deployer пакетима.

Креирање пакета

Приликом креирања пакета, програмери морају да ураде следеће:

  • Уверите се да су склопови пакета потписани.

Примена пакета

Приликом примене пакета, Dataverse администратори морају да ураде следеће:

  • Инсистирајте на потписаним склоповима пакета, тако да можете пратити склоп назад до извора.
  • Тестирајте пакет на претпродукцијској инстанци , пожељно у огледалу < ДИЦТ__Производна инстанца > продуцтион инстанце , пре него што га покренете на < ДИЦТ__Производна инстанца > продуцтион инстанце.
  • Направите резервну копију < ДИЦТ__Производна инстанца > продуцтион инстанце пре распоређивања пакета.

Такође погледајте

Алат за паковање решења