Tworzenie pakietów dla narzędzia Package Deployer

Narzędzie Package Deployer umożliwia administratorom wdrażanie pakietów w wystąpieniach usługi Microsoft Dataverse. Pakiet Package Deployer może składać się z dowolnych lub wszystkich następujących elementów:

  • Jeden lub kilka plików rozwiązań Dataverse.
  • Pliki proste lub wyeksportowane pliki danych konfiguracyjnych z narzędzia Migracja konfiguracji. Aby uzyskać więcej informacji na temat narzędzia, zobacz temat Przenoszenie danych konfiguracji między wystąpieniami oraz organizacjami za pomocą narzędzia Migracja konfiguracji.
  • Kod niestandardowy uruchamiany przed wdrożeniem pakietu, w trakcie wdrażania lub po wdrożeniu do wystąpienia usługi Dataverse.
  • Zawartość HTML właściwa dla pakietu, wyświetlana na początku i na końcu procesu wdrażania. Ta zawartość może być przydatna do przedstawienia opisu rozwiązań i plików wdrożonych w pakiecie.

Uwaga

Istnieje inny typ pakietu o nazwie pakiet plug-in. Ten rodzaj pakietu jest dla zestawów zależnych od dodatku plug-in i nie ma relacji z pakietami Package Deployer.

Wymagania wstępne

  • Upewnij się, że wszystkie rozwiązania i inne pliki, które chcesz uwzględnić w pakiecie, są gotowe.
  • Visual Studio 2019 lub nowszy albo Visual Studio Code.

Omówienie procesu

Aby utworzyć pakiet Package Deployer, wykonaj następujące kroki.

  • Utwórz projekt Visual Studio lub MSBuild
  • Dodawanie rozwiązań i innych plików do projektu
  • Zaktualizuj podane pliki HTML (opcjonalnie)
  • Określanie wartości konfiguracji dla pakietu
  • Definiowanie niestandardowego kodu dla pakietu
  • Tworzenie i wdrażanie pakietu

Kroki te zostały szczegółowo opisane w tym artykule.

Tworzeniu pakietu projektu

Pierwszym krokiem jest utworzenie projektu Visual Studio lub MSBuild dla pakietu. W tym celu należy zainstalować na komputerze projektowy jedno z dwóch dostępnych rozszerzeń narzędzi. W przypadku używania Visual Studio Code zainstaluj interfejs wiersza polecenia Microsoft Power Platform CLI. W przeciwnym razie, jeśli jest zainstalowany Visual Studio 2019, należy zainstalować Power Platform Tools dla programu Visual Studio. Rozszerzenie Power Platform Tools jest obecnie dostępne tylko w Visual Studio 2019. Jednak utworzony projekt można utworzyć przy użyciu Visual Studio 2019 lub nowszej.

Wybierz odpowiednią zakładkę poniżej, aby dowiedzieć się, jak utworzyć projekt przy użyciu żądanego rozszerzenia narzędzia. Oba narzędzia pozwalają na wyjściowy projekt w podobnym formacie.

Uruchom polecenie pac package init, aby utworzyć początkowy pakiet. Więcej informacji: pac package

pac package init help
pac package init --outputDirectory DeploymentPackage

Wynikowe wyjście interfejsu wiersza polecenia zawiera foldery i pliki pokazane poniżej. W tym miejscu jako przykład została użyta nazwa folderu "DeploymentPackage".

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

W utworzonym projekcie znajdź plik konfiguracyjny ImportConfig.xml w folderze PkgAssets oraz plik PackageImportExtension.cs. Pliki te zostaną zmodyfikowane w sposób opisany w dalszej części tego artykułu.

Dodaj pliki pakietów

Po utworzeniu projektu pakietu możesz rozpocząć dodawanie rozwiązań i innych plików do tego projektu.

Korzystając z interfejsu wiersza polecenia, możesz dodawać zewnętrzne pakiety, rozwiązania i odwołania do projektu pakietu za pomocą jednej z podkomend add. Wprowadź pac package help, aby wyświetlić listę podwykonawców. Dodamy teraz rozwiązanie do naszego pakietu.

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

Konfigurowanie pakietu

  1. Zdefiniuj konfigurację pakietu, dodając informacje o pakiecie w pliku ImportConfig.xml w projekcie. Otwórz plik do edycji. Poniższa lista zawiera informacje o każdym parametrze i węźle pliku konfiguracji.

    installsampledata
    Usługa True lub false. Jeśli wartość to true, w wystąpieniu usługi Dataverse zostaną zainstalowane przykładowe dane. Są to te same przykładowe dane, które można zainstalować z obszaru Ustawienia>Zarządzanie danymi w usłudze Dataverse.

    waitforsampledatatoinstall
    True lub false. Jeśli wartość to true i właściwość installsampledata również została ustawiona na true, przed wdrożeniem pakietu należy zaczekać na zainstalowanie przykładowych danych.

    Uwaga

    Upewnij się, że właściwość installsampledata została ustawiona na true, jeśli ustawiasz właściwość waitforsampledatatoinstall na true.

    agentdesktopzipfile
    Nazwa pliku ZIP, który ma zostać rozpakowany. W przypadku określenia w tym miejscu nazwy pliku ZIP podczas procesu wdrażania pakietów zostanie dodany ekran z monitem o wybranie lokalizacji, w której ma zostać rozpakowana zawartość pliku.

    Ten atrybut jest często używany do tworzenia pakietów dla Unified Service Desk dla Dynamics 365. Aby uzyskać więcej informacji o funkcji Unified Service Desk, zobacz Przewodnik po administrowaniu rozwiązaniem Unified Service Desk 3.0.

    agentdesktopexename
    Nazwa pliku EXE lub MSI w pliku ZIP lub adres URL, który ma zostać wywołany na końcu procesu wdrażania.

    Jest to często używana metoda tworzenia pakietów dla funkcji Unified Service Desk.

    crmmigdataimportfile
    Nazwa domyślnego pliku danych konfiguracji (ZIP) wyeksportowanego przy użyciu narzędzia Migracja konfiguracji.

    • Możesz również zaimportować zlokalizowaną wersję pliku danych konfiguracji na podstawie identyfikatora ustawień regionalnych (LCID) określonego przy użyciu nowych ustawień środowiska uruchomieniowego podczas uruchamiania aplikacji Package Deployer. Użyj węzła <cmtdatafile> (opisanego później), aby określić zlokalizowane wersje pliku danych konfiguracji w pakiecie, a następnie użyj metody OverrideConfigurationDataFileLanguage (opisanej później), aby określić logikę importu pliku danych konfiguracji na podstawie identyfikatora ustawień regionalnych definiowanego w oparciu o ustawienia środowiska uruchomieniowego. Nie można jednocześnie importować więcej niż jednego pliku danych konfiguracyjnych przy użyciu pakietu.

    • W przypadku Dataverse (lokalnego), jeśli plik danych konfiguracyjnych zawiera informacje o użytkowniku, a zarówno źródłowa, jak i docelowa instancja Dataverse znajdują się w tej samej domenie Active Directory, informacje o użytkowniku są importowane do docelowej instancji Dataverse. Aby zaimportować informacje o użytkowniku do wystąpienia usługi Dataverse (lokalnego) w innej domenie, musisz uwzględnić plik mapy użytkownika (XML) utworzony przy użyciu narzędzia Migracja konfiguracji w projekcie i wskazać go wraz z plikiem danych konfiguracji przy użyciu atrybutu usermapfilename w węźle <cmtdatafile> opisanym w dalszej części tematu. Informacje o użytkowniku nie mogą być importowane do instancji Dataverse.
      Węzeł <solutions>
      Zawiera tablicę węzłów <configsolutionfile> służących do opisywania rozwiązań do zaimportowania. Kolejność rozwiązań w tym węźle wskazuje kolejność, w jakiej rozwiązania zostaną zaimportowane w docelowym wystąpieniu usługi Dataverse.

      Węzeł <configsolutionfile>
      Użyj tego węzła w obszarze węzła <solutions> w celu określenia poszczególnych rozwiązań i następujących informacji dla każdego importowanego rozwiązania:

    • solutionpackagefilename: określ nazwę pliku ZIP rozwiązania. Wymagane.

    • overwriteunmanagedcustomizations: określ, czy wszystkie niezarządzane operacje dostosowywania mają być zastępowane podczas importowania rozwiązania, które już istnieje w docelowym wystąpieniu usługi Dynamics 365. Ten atrybut jest opcjonalny, a jeśli go nie określisz, domyślnie niezarządzane dostosowania w istniejącym rozwiązaniu zostaną zachowane w docelowej instancji Dynamics 365.

    • publishworkflowsandactivateplugins: określ, czy po zaimportowaniu rozwiązania chcesz opublikować przepływy pracy i aktywować wtyczki w docelowym wystąpieniu usługi Dynamics 365. Ten atrybut jest opcjonalny i jeśli nie zostanie określony, domyślnie przepływy pracy są publikowane, a wtyczki są aktywowane po zaimportowaniu rozwiązania do docelowej instancji Dynamics 365.

      W pakiecie można dodać wiele nazw plików rozwiązań, dodając dowolną liczbę węzłów <configsolutionfile>. Jeśli na przykład chcesz zaimportować trzy pliki rozwiązań, dodaj je jak pokazano poniżej:

    
    <solutions>  
    <configsolutionfile solutionpackagefilename="SampleSolutionOne_1_0_managed.zip"  
    overwriteunmanagedcustomizations="false"  
    publishworkflowsandactivateplugins="true"/>  
    <configsolutionfile solutionpackagefilename="SampleSolutionTwo_1_0_managed.zip"  
    overwriteunmanagedcustomizations="false"  
    publishworkflowsandactivateplugins="true"/>  
    <configsolutionfile solutionpackagefilename="SampleSolutionThree_1_0_managed.zip" />  
    </solutions>  
    
    

    Węzeł <filestoimport>
    Zawiera tablice węzłów <configimportfile> i <zipimportdetails>, które są używane do odpowiedniego opisywania poszczególnych plików i plików ZIP do zaimportowania.

    Węzeł <configimportfile>
    Użyj tego węzła w obszarze <configimportfile> w celu opisania pliku, który ma zostać zaimportowany do usługi Dataverse. W pakiecie można dodać wiele plików, dodając dowolną liczbę węzłów <configimportfile>.

    
    <filestoimport>  
    <configimportfile filename="File.csv"  
    filetype="CSV"  
    associatedmap="FileMap"  
    importtoentity="FileEntity"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="true" />  
    <configimportfile filename="File.zip"  
    filetype="ZIP"  
    associatedmap="FileMapName"  
    importtoentity="FileEntity"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="true"/>  
    
    </filestoimport>  
    
    

    Poniżej znajduje się lista obsługiwanych atrybutów:

    Atrybut opis
    filename Nazwa pliku zawierającego dane importu. Jeśli plik jest plikiem ZIP, węzeł <zipimportdetails> musi być obecny wraz z węzłem <zipimportdetail> dla każdego pliku w pliku ZIP.
    filetype Może to być wartość csv, xml lub zip.
    associatedmap Nazwa mapowania danych importu w usłudze Dataverse do użycia z tym plikiem. Jeśli to pole jest puste, próby użycia systemu określają nazwę mapowania danych importu dla tego pliku.
    importtoentity Może być to nazwa pliku EXE w pliku ZIP, adres URL lub plik MSI, który ma udostępnić link do wywołania na końcu procesu wdrażania.
    datadelimiter Nazwa ogranicznika danych używanego w pliku importu. Prawidłowe wartości to pojedynczy cudzysłów lub podwójny cudzysłów.
    fielddelimiter Nazwa ogranicznika pola używanego w pliku importu. Poprawne wartości to przecinek, dwukropek lub pojedynczy cudzysłów.
    enableduplicatedetection Wskazuje, czy reguły wykrywania duplikatów mają być włączone podczas importu danych. Prawidłowe wartości to true i false.
    isfirstrowheader Używany do wskazywania, że pierwszy wiersz pliku importu zawiera nazwy pól. Prawidłowe wartości to true i false.
    isrecordownerateam Wskazuje, czy właścicielem rekordu związanego z raportem powinien być zespół. Prawidłowe wartości to true i false.
    owneruser Wskazuje identyfikator użytkownika, który powinien być właścicielem rekordów. Wartość domyślna to aktualnie zalogowany użytkownik.
    waitforimporttocomplete W przypadku wartości trueprzed kontynuowaniem system czeka na ukończenie importu. W przypadku wartości false zadania są umieszczane w kolejce i następuje przejście dalej.

    Węzeł <zipimportdetails>
    Ten węzeł zawiera tablicę węzłów <zipimportdetail> opisujących pliki dołączone do pliku ZIP, które są używane do importowania do rozwiązania Dynamics 365.

    Węzeł <zipimportdetail>
    Użyj tego węzła w obszarze węzła <zipimportdetails>, aby podać informacje o poszczególnych plikach w pliku ZIP wskazanym w węźle <configimportfile>.

    <filestoimport>  
    ...  
    ...  
    <zipimportdetails>  
    <zipimportdetail filename="subfile1.csv" filetype="csv" importtoentity="account" />  
    <zipimportdetail filename="subfile2.csv" filetype="csv" importtoentity="contact" />  
    </zipimportdetails>  
    </filestoimport>  
    
    

    Obsługiwane atrybuty są wymienione poniżej:

    Atrybut opis
    filename Nazwa pliku zawierającego dane importu.
    filetype Ta wartość może być csv lub xml.
    importtoentity Może być to nazwa pliku EXE w pliku ZIP, adres URL lub plik MSI, który ma udostępnić link do wywołania na końcu procesu wdrażania.

    Węzeł <filesmapstoimport>
    Ten węzeł zawiera tablicę węzłów <configmapimportfile> do zaimportowania. Kolejność plików map w tym węźle wskazuje kolejność ich importowania. Aby uzyskać informacje na temat mapowań danych, zobacz temat Tworzenie mapowań danych do zaimportowania.

    Węzeł <configimportmapfile>
    Użyj tego węzła w obszarze węzła <filesmapstoimport>, aby podać informacje o poszczególnych plikach map do zaimportowania w usłudze Dataverse.

    <filesmapstoimport>  
    <configimportmapfile filename="FileMap.xml" />  
    </filesmapstoimport>  
    

    Węzeł <cmtdatafiles>
    Węzeł ten zawiera tablicę węzłów <cmtdatafile>, które zawierają lokalizację pliku danych konfiguracyjnych do zaimportowania.

    Węzeł <cmtdatafile>
    Użyj tego węzła w obszarze węzła <cmtdatafiles>, aby wybrać zlokalizowane pliki danych konfiguracji wraz z identyfikatorem ustawień regionalnych (wymaganym) i plikiem mapy informacji o użytkowniku (opcjonalnym). Na przykład:

    <cmtdatafiles>  
    <cmtdatafile filename="data_1033.zip" lcid="1033" usermapfilename="UserMap.xml" />  
    <cmtdatafile filename="data_1041.zip" lcid="1041" usermapfilename="" />  
    </cmtdatafiles>  
    

    Możesz zdefiniować logikę w metodzie OverrideConfigurationDataFileLanguage (opisanej później) w celu zaimportowania zlokalizowanego pliku danych konfiguracji zamiast pliku domyślnego (określonego w atrybucie crmmigdataimportfile) na podstawie wartości identyfikatora ustawień regionalnych (LCID) opartej o ustawienia środowiska uruchomieniowego (opisane później).

  2. Wybierz pozycję Zapisz wszystko.

    Poniższy plik xml przedstawia treść przykładowego pliku ImportConfig.xml.

    <?xml version="1.0" encoding="utf-16"?>  
    <configdatastorage xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"  
    xmlns:xsd="https://www.w3.org/2001/XMLSchema"  
    installsampledata="true"  
    waitforsampledatatoinstall="true"  
    agentdesktopzipfile=""  
    agentdesktopexename=""  
    crmmigdataimportfile="data_1033.zip">  
    <solutions>  
    <configsolutionfile solutionpackagefilename="SampleSolutionOne_1_0_managed.zip"  
    overwriteunmanagedcustomizations="false"  
    publishworkflowsandactivateplugins="true"/>  
    <configsolutionfile solutionpackagefilename="SampleSolutionTwo_1_0_managed.zip"  
    overwriteunmanagedcustomizations="false"  
    publishworkflowsandactivateplugins="true"/>  
    <configsolutionfile solutionpackagefilename="SampleSolutionThree_1_0_managed.zip" />  
    </solutions>  
    <filestoimport>  
    <configimportfile filename="SampleOption.csv"  
    filetype="CSV"  
    associatedmap="SampleOption"  
    importtoentity="sample_option"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="false"/>  
    <configimportfile filename="File.zip"  
    filetype="ZIP"  
    associatedmap="FileMapName"  
    importtoentity="FileEntity"  
    datadelimiter=""  
    fielddelimiter="comma"  
    enableduplicatedetection="true"  
    isfirstrowheader="true"  
    isrecordownerateam="false"  
    owneruser=""  
    waitforimporttocomplete="true"/>  
    <zipimportdetails>  
    <zipimportdetail filename="subfile1.csv"  
    filetype="csv"  
    importtoentity="account" />  
    <zipimportdetail filename="subfile2.csv"  
    filetype="csv"  
    importtoentity="contact" />  
    </zipimportdetails>  
    </filestoimport>  
    <filesmapstoimport>  
    <configimportmapfile filename="SampleOption.xml" />  
    </filesmapstoimport>  
    <cmtdatafiles>  
    <cmtdatafile filename="data_1033.zip"  
    lcid="1033"  
    usermapfilename="UserMap.xml" />  
    <cmtdatafile filename="data_1041.zip"  
    lcid="1041"  
    usermapfilename="" />  
    </cmtdatafiles>  
    </configdatastorage>  
    
    

Dodaj niestandardowy kod

Można dodać kod niestandardowy wykonywany przed, podczas i po zaimportowaniu pakietu do środowiska. W tym celu wykonaj następujące instrukcje.

  1. Wyedy PackageTemplate.cs (lub PackageImportExtension.cs) w folderze głównym projektu.

  2. W pliku C# możesz:

    1. Wprowadź kod niestandardowy do wykonania po zainicjowaniu pakietu w definicji metody zastępowania dla elementu InitializeCustomExtension.

      Tej metody można użyć, aby umożliwić użytkownikom korzystanie z parametrów środowiska uruchomieniowego podczas uruchamiania pakietu. Jako deweloper możesz dodać do pakietu obsługę każdego parametru środowiska uruchomieniowego, korzystając z właściwości RuntimeSettings, pod warunkiem, że kod będzie przetwarzać go w zależności od danych wprowadzonych przez użytkownika.

      Na przykład poniższy przykładowy kod włącza parametr środowiska uruchomieniowego o nazwie SkipChecks dla pakietu zawierającego dwie możliwe wartości: true lub false. Przykładowy kod sprawdza, czy użytkownik określił parametry środowiska uruchomieniowego podczas uruchamiania narzędzia Package Deployer (korzystając z wiersza polecenia lub programu PowerShell), a następnie przetwarza te informacje w odpowiedni sposób. Jeśli użytkownik nie określił żadnych parametrów środowiska uruchomieniowego podczas uruchamiania pakietu, właściwość RuntimeSettings będzie mieć wartość 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");  
      }  
      

      Kod umożliwia administratorowi użycie wiersza polecenia lub polecenia cmdlet Import-CrmPackage do określenia, czy podczas importowania pakietu przy użyciu narzędzia Package Deployer będzie pomijane sprawdzanie bezpieczeństwa. Więcej informacji: Wdrażanie pakietów za pomocą narzędzia Package Deployer i programu Windows PowerShell

    2. Wprowadź kod niestandardowy do wykonania przed zaimportowaniem rozwiązań w definicji metody zastępowania dla elementu PreSolutionImport, aby określić, czy operacje dostosowywania mają być zachowywane czy zastępowane podczas aktualizowania określonego rozwiązania w docelowym wystąpieniu usługi Dataverse, oraz aby określić, czy dodatki plug-in i przepływy pracy mają być aktywowane automatycznie.

    3. Użyj nadrzędnej definicji metody RunSolutionUpgradeMigrationStep, aby wykonać transformację danych lub aktualizację między dwiema wersjami rozwiązania Ta metoda jest wywoływana tylko wtedy, gdy importowane rozwiązanie jest już obecne w docelowej instancji Dataverse.

      Ta funkcja oczekuje następujących parametrów:

      Parametr Opis
      solutionName Nazwa rozwiązania
      oldVersion Numer wersji starego rozwiązania
      newVersion Numer wersji nowego rozwiązania
      oldSolutionId Identyfikator GUID starego rozwiązania.
      newSolutionId Identyfikator GUID nowego rozwiązania.
    4. Wprowadź kod niestandardowy do wykonania przed ukończeniem importu rozwiązania w definicji zastępowania dla metody BeforeImportStage. Przykładowe dane i niektóre pliki proste dla rozwiązań określonych w pliku ImportConfig.xml są importowane przed ukończeniem importu rozwiązania.

    5. Zastąp obecnie wybrany język na potrzeby importu danych konfiguracji, korzystając z definicji metody zastępowania dla elementu OverrideConfigurationDataFileLanguage. Jeśli podany identyfikator lokalizacji (LCID) określonego języka nie zostanie znaleziony na liście dostępnych języków w pakiecie, importowany jest domyślny plik danych.

      Języki dostępne dla danych konfiguracji są określane w węźle <cmtdatafiles> pliku ImportConfig.xml. Domyślny plik importu danych konfiguracji jest określany w atrybucie crmmigdataimportfile pliku ImportConfig.xml.

      Pomijanie sprawdzania danych (OverrideDataImportSafetyChecks = true) może być tutaj skuteczne, jeśli masz pewność, że docelowa instancja Dataverse nie zawiera żadnych danych.

    6. Wprowadź kod niestandardowy do wykonania po ukończeniu importu w definicji zastępowania dla metody AfterPrimaryImport>. Pozostałe pliki płaskie, które nie zostały zaimportowane wcześniej, przed rozpoczęciem importu rozwiązania, są importowane teraz.

    7. Zmień domyślną nazwę folderu pakietu na żądaną nazwę pakietu. W tym celu zmień nazwę folderu PkgFolder (lub PkgAssets) w okienku Eksploratora rozwiązań, a następnie edytuj wartość zwracaną w ramach właściwości 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. Zmień nazwę pakietu, edytując wartość zwracaną w ramach właściwości GetNameOfImport.

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

      Ta zwrócona wartość to nazwa pakietu, która pojawia się na stronie wyboru pakietu w kreatorze Dynamics 365 Package Deployer.

    9. Zmień opis pakietu, edytując wartość zwracaną w ramach właściwości GetImportPackageDescriptionText.

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

      Zwracana wartość to opis pakietu, który pojawia się obok nazwy pakietu na stronie wyboru pakietu w kreatorze Package Deployer.

    10. Zmień długą nazwę pakietu, edytując wartość zwracaną w ramach właściwości GetLongNameOfImport.

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

      Długa nazwa pakietu zostanie wyświetlona na następnej stronie po wybraniu pakietu do zainstalowania.

  3. Ponadto w pakiecie są dostępne następujące zmienne i funkcje:

    Nazwisko Typ Opis
    CreateProgressItem(String) Function Służy do tworzenia nowego elementu postępu w interfejsie użytkownika.
    RaiseUpdateEvent(String, ProgressPanelItemStatus) Function Służy do aktualizowania postępu utworzonego przez wywołanie do elementu CreateProgressItem(String).

    ProgressPanelItemStatus to wyliczenie z następującymi wartościami:

    Working (uruchomione) = 0
    Complete (ukończone) = 1
    Failed (niepowodzenie) = 2
    Warning (ostrzeżenie) = 3
    Unknown (nieznane) = 4
    RaiseFailEvent(String, Exception) Function Służy do wskazywania stanu niepowodzenia bieżącego importu za pomocą komunikatu wyjątku.
    IsRoleAssoicatedWithTeam(Guid, Guid) Function Służy do sprawdzania, czy rola została skojarzona z określonym zespołem.
    IsWorkflowActive(Guid) Function Służy do sprawdzania, czy określony przepływ pracy jest aktywny.
    PackageLog Wskaźnik klasy To wskaźnik do zainicjowanego interfejsu rejestrowania w pakiecie. Ten interfejs jest używany w pakiecie do rejestrowania komunikatów i wyjątków w pliku dziennika pakietów.
    RootControlDispatcher Właściwości To interfejs dyspozytora umożliwiający sterowanie renderowaniem własnego interfejsu użytkownika podczas wdrażania pakietu. Ten interfejs umożliwia zawijanie wszystkich elementów lub poleceń interfejsu użytkownika. Ważne jest, aby sprawdzić tę zmienną pod kątem wartości null przed jej użyciem, ponieważ może ona nie być ustawiona na wartość.
    CrmSvc Właściwości To wskaźnik do klasy CrmServiceClient, który umożliwia pakietowi kontaktowanie się z rozwiązaniem Dynamics 365 z poziomu pakietu. Wskaźnik służy do wykonywania metod zestawu SDK i innych akcji w zastąpionych metodach.
    DataImportBypass Właściwości Określ, czy w narzędziu Package Deployer usługi Dynamics 365 wszystkie operacje importu danych, takie jak importowanie przykładowych danych usługi Dataverse, danych plików prostych i danych wyeksportowanych z narzędziem Konfiguracji migracji, mają być pomijane. Wybierz wartość true lub false. Wartość domyślna to false.
    OverrideDataImportSafetyChecks Właściwości Określenie, czy Dynamics 365 Package Deployer pomija niektóre z kontroli bezpieczeństwa, co pomaga poprawić wydajność importu. Wybierz wartość true lub false. Wartość domyślna to false.

    Należy ustawić tę właściwość na true tylko wtedy, gdy docelowa instancja Dataverse nie zawiera żadnych danych.
  4. Zapisz projekt. Następnym krokiem jest kompilacja pakietu.

Kompiluj i wdróż

Poniższe sekcje opisują sposób tworzenia i wdrażania pakietu.

Tworzenie

Tworzenie pakietu opisano poniżej w zależności od używanego narzędzia.

Aby zbudować pakiet utworzony za pomocą CLI, można załadować plik .csproj do Visual Studio, ale zamiast tego użyjemy polecenia dotnet i MSBuild. W przykładzie poniżej przyjęto, że katalog roboczy zawiera plik *.csproj.

> dotnet publish

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

Możesz opcjonalnie zobaczyć szczegóły wbudowanego pakietu.

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

Pakiet to następujące pliki w folderze <Project>\Bin\Debug.

  • <PackageName>, folder : nazwa folderu jest taka sama jak nazwa zmieniona dla nazwy folderu pakietu w kroku 2.g sekcji Dodawanie kodu niestandardowego. Ten folder zawiera wszystkie rozwiązania, dane konfiguracji, pliki proste oraz zawartość pakietu.

Uwaga

Może się pojawić folder .NET (np. net472) zawierający folder pdpublish. Biblioteka DLL i inne pliki projektów znajdują się w folderze pdpublish.

  • <PackageName>.dll: zestaw z niestandardowym kodem dla pakietu. Domyślnie, nazwa zestawu jest taka sama jak nazwa projektu.

Wdrażaj

Po utworzeniu pakietu można wdrożyć go w wystąpieniu usługi Dataverse, korzystając z narzędzia Package Deployer, programu Windows PowerShell lub polecenia interfejsu wiersza polecenia.

  • Aby wdrożyć za pomocą narzędzia Package Deployer, najpierw pobierz narzędzie zgodnie z opisem w Narzędzia programistyczne Dataverse. Następnie postępuj zgodnie ze szczegółowymi informacjami na temat wdrażania pakietów w artykule Wdrażaj pakiety za pomocą Package Deployer lub Windows PowerShell.

  • Aby wdrożyć przy użyciu funkcji CLI, użyj tego polecenia pac package deploy.

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

    Uwaga

    Aby wdrożyć pakiet w środowisku docelowym przy użyciu interfejsu CLI, należy najpierw skonfigurować profil uwierzytelniania i wybrać organizację. Więcej informacji: pac auth create, pac org select

Najlepsze rozwiązania

Wymieniono poniżej kilka porad dotyczących najlepszych praktyk, które należy wykonać podczas pracy z pakietami Package Deployer.

Tworzenie pakietów

Podczas tworzenia pakietów deweloperzy muszą:

  • Upewnij się, że zestawy pakietów są podpisane.

Wdrażanie pakietów

Podczas wdrażania pakietów administratorzy Dataverse muszą:

  • Wymagać podpisanych zestawów pakietów, aby umożliwić śledzenie źródła zestawu.
  • Przetestuj pakiet na instancji przedprodukcyjnej, najlepiej lustrzanym odbiciu instancji produkcyjnej, przed uruchomieniem go na instancji produkcyjnej.
  • Wykonywać kopię zapasową wystąpienia produkcyjnego przed wdrożeniem pakietu.

Zobacz także

Narzędzie Solution Packager