Vytvoření balíčků pro nástroj Package Deployer
Package Deployer umožňuje správcům nasadit balíčky na instance Microsoft Dataverse. Balíček Package Deployer může být tvořen jakoukoli nebo všemi následujícími položkami:
- Jeden nebo více souborů řešení aplikace Dataverse.
- Ploché soubory nebo soubory konfiguračních dat z nástroje pro migraci konfigurace. Další informace o tomto nástroji viz Přesunutí dat konfigurace mezi instancemi a organizacemi pomocí nástroje Configuration Migration tool.
- Vlastní kód, který lze spustit před, během nebo po nasazení balíčku do instance Dataverse.
- HTML obsah specifický pro balíček, který se může zobrazit na začátku nebo konci procesu nasazení. Tento obsah může být užitečný pro poskytnutí popisu řešení a souborů, které jsou nasazeny v balíčku.
Poznámka:
Existuje další typ balíčku nazývaný balíček modulu plug-in. Tento druh balíčku je určen pro sestavení závislá na modulech plug-in a nemá žádný vztah s balíčky Package Deployer.
Předpoklady
- Ujistěte se, že máte připravena všechna řešení a další soubory, které chcete zahrnout do balíčku.
- Visual Studio 2019 nebo pozdější nebo Visual Studio Code.
Přehled procesu
Chcete-li vytvořit balíček Package Deployer, proveďte následující kroky.
- Vytvořte projekt Visual Studio nebo MSBuild
- Přidejte řešení a další soubory do projektu
- Aktualizujte poskytnuté soubory HTML (volitelné)
- Zadejte hodnoty konfigurace balíčku
- Definujte vlastní kód pro balíček
- Sestavte a nasaďte balíček
Tyto kroky jsou podrobně popsány v tomto článku.
Vytvoření projektu balíčku
Prvním krokem je vytvoření projektu Visual Studio nebo MSBuild pro balíček. Chcete-li to provést, musíte mít na vývojovém počítači nainstalované jedno ze dvou dostupných rozšíření nástrojů. Pokud používáte Visual Studio Code, nainstalujte Microsoft Power Platform CLI. V opačném případě, pokud používáte Visual Studio 2019 nebo novější, nainstalujte Power Platform Tools pro Visual Studio.
Vyberte příslušnou kartu níže a zjistěte, jak vytvořit projekt pomocí požadovaného rozšíření nástroje. Výstup obou nástrojů je projekt v podobném formátu.
Spusťte příkaz pac package init k vytvoření počátečního balíčku. Další informace: pac package
pac package init help
pac package init --outputDirectory DeploymentPackage
Výsledný výstup rozhraní příkazového řádku obsahuje složky a soubory zobrazené níže. Jako příklad zde byl použit název složky „DeploymentPackage“.
C:.
└───DeploymentPackage
│ DeploymentPackage.csproj
│ PackageImportExtension.cs
│
└───PkgAssets
ImportConfig.xml
manifest.ppkg.json
Ve vytvořeném projektu najděte konfigurační soubor ImportConfig.xml ve složce PkgAssets a soubor PackageImportExtension.cs. Tyto soubory upravíte, jak je popsáno dále v tomto článku.
Přidání souborů balíčku
Po vytvoření projektu balíčku můžete začít přidávat řešení a další soubory do tohoto projektu.
Při použití rozhraní příkazového řádku můžete do projektu balíčku přidat externí balíčky, řešení a odkazy pomocí jednoho z dílčích příkazů pro přidání. Příkazem pac package help
zobrazíte seznam dílčích příkazů. Nyní přidejme řešení do našeho balíčku.
> 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.
Konfigurace balíčku
Definujte konfiguraci balíčku přidáním informací o vašem balíčku do souboru ImportConfig.xml v projektu. V části Referenční informace o souboru ImportConfig najdete příklad a popisy platných prvků a atributů k použití.
Přidání vlastního kódu
Můžete přidat vlastní kód, který se spustí před, během a po importu balíčku do prostředí. Postup je následující.
Upravte soubor PackageTemplate.cs (nebo PackageImportExtension.cs) v kořenové složce projektu.
V souboru C# můžete:
Zadat vlastní kód, který se má provést při inicializaci balíčku v definici metody přepsání
InitializeCustomExtension
.Tuto metodu lze použít k tomu, aby uživatelé mohli používat parametry modulu runtime při spuštění balíčku. Jako vývojář můžete do balíčku přidat podporu libovolného parametru modulu runtime pomocí vlastnosti RuntimeSettings, pokud máte kód pro zpracování na základě vstupu uživatele.
Následující ukázkový kód například povoluje volaný parametr modulu runtime
SkipChecks
pro balíček, který má dvě možné hodnoty: true nebo false. Ukázkový kód zkontroluje, zda uživatel během spuštění nástroje Package Deployer určil nějaké parametry modulu runtime (buď pomocí příkazového řádku nebo prostředí PowerShell), a poté informace příslušným způsobem zpracovává. Pokud uživatel při spuštění balíčku nezadá žádný parametr modulu runtime, hodnota vlastnosti RuntimeSettings bude null.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"); }
Tento kód umožňuje správci používat příkazový řádek nebo rutinu Import-CrmPackage k zadání, zda přeskočit bezpečnostní kontroly při spuštění nástroje Package Deployer pro import balíčku. Další informace: Nasazení balíčků pomocí nástroje Package Deployer a prostředí Windows PowerShell
Zadat vlastní kód, který se má provést před importem řešení v definici metody přepsání
PreSolutionImport
pro určení, zda se mají zachovat nebo přepsat vlastní nastavení při aktualizaci zadaného řešení v cílové instanci Dataverse a zda se mají automaticky aktivovat moduly plugin a pracovní postupy.Použít definici metody přepsání
RunSolutionUpgradeMigrationStep
k provedení transformace nebo upgradu dat mezi dvěma verzemi řešení. Tato metoda se volá, pouze pokud se importované řešení již nachází v cílové instanci Dataverse.Tato funkce očekává následující parametry:
Parametr Popis solutionName
Název řešení oldVersion
Číslo verze starého řešení newVersion
Číslo verze nového řešení oldSolutionId
Identifikátor GUID starého řešení. newSolutionId
Identifikátor GUID nového řešení. Zadat vlastní kód, který se má provést před dokončením importu řešení v definici metody přepsání metody
BeforeImportStage
. Ukázková data a některé ploché soubory pro řešení uvedená v souboruImportConfig.xml
jsou importovány před dokončením importu řešení.Přepsat aktuálně vybraný jazyk pro import konfiguračních dat pomocí definice metody přepsání
OverrideConfigurationDataFileLanguage
. Pokud zadané ID národního prostředí (LCID) zadaného jazyka není nalezeno v seznamu dostupných jazyků v balíčku, bude importován výchozí datový soubor.Dostupné jazyky pro konfigurační data zadáte v uzlu
<cmtdatafiles>
v souboruImportConfig.xml
. Výchozí soubor pro import konfiguračních dat je uveden v atributucrmmigdataimportfile
v souboruImportConfig.xml
.Přeskakování kontrol dat (OverrideDataImportSafetyChecks = true) zde může být efektivní, pokud jste si jisti, že cílová instance Dataverse neobsahuje žádná data.
Zadat vlastní kód, který se má provést po dokončení importu v definici metody přepsání metody
AfterPrimaryImport
>. Zbývající ploché soubory, které nebyly importovány dříve, než byl zahájen import řešení, se nyní importují.Změňte výchozí název složky balíčku na požadovaný název balíčku. Chcete-li tak učinit, přejmenujte složku
PkgFolder
(nebo PkgAssets) v podokně Průzkumník řešení a poté upravte vrácenou hodnotu pod vlastností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"; } }
Změnit název balíčku úpravou návratové hodnoty pod vlastností
GetNameOfImport
.public override string GetNameOfImport(bool plural) { return "Package Short Name"; }
Tato vrácená hodnota je název vašeho balíčku, který se objevuje na stránce pro výběr balíčku v průvodci nástrojem Dynamics 365 Package Deployer.
Změnit popis balíčku úpravou návratové hodnoty pod vlastností
GetImportPackageDescriptionText
.public override string GetImportPackageDescriptionText { get { return "Package Description"; } }
Tato vrácená hodnota je popis vašeho balíčku, který se objevuje vedle názvu balíčku na stránce pro výběr balíčku v průvodci nástrojem Package Deployer.
Změnit dlouhý název balíčku úpravou návratové hodnoty pod vlastností
GetLongNameOfImport
.public override string GetLongNameOfImport { get { return "Package Long Name"; } }
Dlouhý název balíčku se objeví na další stránce poté, co jste vybrali balíček, který chcete nainstalovat.
Balíček navíc obsahuje následující funkce a proměnné:
Název Typ Popis CreateProgressItem(String) Function Slouží k vytvoření nové položky postupu v uživatelském rozhraní (UI). RaiseUpdateEvent(String, ProgressPanelItemStatus) Function Slouží k aktualizaci postupu vytvořeného voláním CreateProgressItem(String).
ProgressPanelItemStatus je výčet s následujícími hodnotami:
Pracovní = 0
Dokončeno = 1
Chyba = 2
Varování = 3
Neznámé = 4RaiseFailEvent(String, Exception) Function Slouží k selhání importu aktuálního stavu pomocí zprávy o výjimce. IsRoleAssoicatedWithTeam(Guid, Guid) Function Slouží k určení, zda je role přidružena k zadanému týmu. IsWorkflowActive(Guid) Function Slouží k určení, zda je zadaný pracovní postup aktivní. PackageLog Ukazatel třídy Ukazatel inicializovaného rozhraní protokolování balíčku. Toto rozhraní používá balíček k protokolování zpráv a výjimek do souboru protokolu balíčku. RootControlDispatcher Vlastnost Rozhraní dispečera sloužící k tomu, abyste mohli během implementace balíčku vykreslit vlastní uživatelské rozhraní. Toto rozhraní slouží k zalomení všech prvků nebo příkazů uživatelského rozhraní. Před použitím této proměnné je důležité zkontrolovat, zda obsahuje nebo neobsahuje hodnotu null, protože může být nastavena na hodnotu. CrmSvc Vlastnost Ukazatel na třídu CrmServiceClient, která umožňuje, aby balíček adresoval Dynamics 365 z balíčku. Tento ukazatel použijte k provedení metod SDK a dalších akcí v přepsaných metodách. DataImportBypass Vlastnost Zadejte, zda Dynamics 365 Package Deployer přeskočí všechny operace importu dat, jako je import ukázkových dat Dataverse, data plochých souborů a data exportovaná z Configuration Migration Tool. Zadejte true nebo false. Výchozí hodnota je false
.OverrideDataImportSafetyChecks Vlastnost Určete, zda Dynamics 365 Package Deployer vynechává některé ze svých bezpečnostních kontrol, což pomáhá zlepšit výkonnost importu. Zadejte true
nebofalse
. Výchozí hodnota jefalse
.
Měli byste nastavit tuto vlastnost natrue
, pouze pokud cílová instance Dataverse neobsahuje žádná data.Uložte projekt. Dalším krokem je sestavení balíčku.
Sestavení a nasazení
Následující části popisují, jak sestavit a nasadit balíček.
Sestavení
Sestavení balíčku je popsáno níže v závislosti na tom, jaký nástroj používáte.
Chcete-li sestavit balíček vytvořený pomocí CLI, můžete načíst soubor .csproj do Visual Studio, ale místo toho použijeme příkaz dotnet a MSBuild. Níže uvedený příklad předpokládá, že pracovní adresář obsahuje soubor *.csproj.
> dotnet publish
DeploymentPackage -> C:\Users\peter\Downloads\DeploymentPackage\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Volitelně se můžete podívat na detaily sestaveného balíčku.
> pac package show --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Váš balíček tvoří následující soubory ve složce <Project>\Bin\Debug.
- <PackageName> složku : Název složky je stejný jako ten, který jste změnili pro název složky balíčku v krok 2.g této části Přidejte vlastní kód. Tato složka obsahuje všechna řešení, konfigurační data, ploché soubory a obsah balíčku.
Poznámka:
Můžete vidět složku .NET (např. net472) obsahující složku pdpublish. Vaše DLL a další soubory projektu jsou v této složce pdpublish.
- <PackageName> .knihovna DLL : Sestava obsahuje vlastní kód pro váš balíček. Výchozí název sestavení je stejný jako název projektu.
Nasadit
Po vytvoření balíčku jej můžete nasadit do instance Dataverse pomocí nástroje Package Deployer nebo prostředí Windows PowerShell nebo příkaz rozhraní příkazového řádku.
K nasazení pomocí nástroje Package Deployer si nejprve stáhněte tento nástroj, jak je popsáno v části Vývojové nástroje Dataverse. Dále postupujte podle podrobných informací o nasazení balíčků v článku Nasazení balíčků pomocí Package Deployer nebo Windows PowerShell.
Chcete-li provést nasazení pomocí rozhraní příkazového řádku, použijte příkaz
pac package deploy
.> pac package deploy --package .\bin\Debug\DeploymentPackage.1.0.0.pdpkg.zip
Poznámka:
Chcete-li nasadit balíček do cílového prostředí pomocí rozhraní příkazového řádku, musíte nejprve nastavit profil ověřování a vybrat organizaci. Další informace: pac auth create, pac org select
Osvědčené postupy
Níže je uvedeno několik tipů osvědčených postupů, které byste měli dodržovat při práci s balíčky Package Deployer.
Vytváření balíčků
Při vytváření balíčků musí vývojáři:
- Ujistěte se, že jsou podepsány sestavení balíků.
Nasazování balíčků
Při nasazování balíčků musí správci aplikace Dataverse:
- Trvejte na podepsaných sestavách balíků abyste mohli sledovat sestavení zpět k jeho zdroji.
- Otestujte balíček na předprodukční instanci, nejlépe zrcadlový obraz produkční instance, než jej spustíte na produkční instance.
- Zálohujte produkční instance před nasazením balíčku.