इसके माध्यम से साझा किया गया


Package Deployer उपकरण के लिए पैकेज बनाएँ

Package Deployer के चलते व्यवस्थापक Microsoft Dataverse आवृत्तियों पर पैकेज परिनियोजित कर सकते हैं. Package Deployer पैकेज में निम्न में से कोई एक या सभी मौजूद हो सकते हैं:

  • एक या एक से अधिक Dataverse समाधान फ़ाइलें.
  • फ़्लैट फ़ाइलें या कॉंफ़िगरेशन माइग्रेशन उपकरण से निर्यात की गई कॉन्फ़िगरेशन डेटा फ़ाइल. उपकरण के बारे में अधिक जानकारी के लिए, Configuration Migration टूल की सहायता से कॉन्फ़िगरेशन डेटा को आवृत्तियों और संगठनों में स्थानांतरित करें देखें.
  • वह कस्टम कोड, जिसे 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 2019 का उपयोग कर रहे हैं, तो Visual Studio के लिए Power Platform टूल्स इंस्टॉल करें. Power Platform उपकरण एक्सटेंशन वर्तमान में केवल 2019 के लिए Visual Studio उपलब्ध है। हालांकि, बनाया गया प्रोजेक्ट Visual Studio 2019 या उसके बाद के संस्करण का उपयोग करके बनाया जा सकता है.

वांछित टूल एक्सटेंशन का उपयोग करके प्रोजेक्ट बनाने का तरीका जानने के लिए नीचे उपयुक्त टैब का चयन करें. दोनों टूल्स प्रोजेक्ट को एक समान प्रारूप में आउटपुट करते हैं.

आरंभिक पैकेज बनाने के लिए 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

बनाए गए प्रोजेक्ट में, PkgAssets फ़ोल्डर और PackageImportExtension.cs फ़ाइल में ImportConfig.xml कॉन्फ़िगरेशन फ़ाइल ढूँढें। आप इन फ़ाइलों को इस आलेख में बाद में वर्णित के रूप में संशोधित करेंगे।

पैकेज फाइलें जोड़ें

पैकेज प्रोजेक्ट बनाने के बाद, आप उस प्रोजेक्ट में समाधान और अन्य फ़ाइलें जोड़ना शुरू कर सकते हैं.

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.

पैकेज कॉन्फ़िगर करें

  1. प्रोजेक्ट में उपलब्ध ImportConfig.xml फ़ाइल में अपने पैकेज के बारे में जानकारी जोड़कर पैकेज कॉन्फ़िगरेशन परिभाषित करें. संपादन के लिए फ़ाइल खोलें. निम्न सूची, कॉन्फ़िगरेशन फ़ाइल में प्रत्येक पैरामीटर और नोड के बारे में जानकारी प्रदान करती है.

    installsampledata
    True या false. यदि true है, तो Dataverse आवृत्ति में नमूना डेटा स्थापित करता है. यह डेटा, वही नमूना डेटा है, जिसे आप सेटिंग>डेटा प्रबंधन क्षेत्र से Dataverse में स्थापित कर सकते हैं.

    waitforsampledatatoinstall
    सही या गलत. यदि सही है और यदि installsampledata भी सही पर सेट है, तो पैकेज को परिनियोजित करने से पहले नमूना डेटा के स्थापित होने की प्रतीक्षा करता है.

    नोट

    यदि आप waitforsampledatatoinstall को सही पर सेट कर रहे हैं, तो installsampledata को सही पर सेट करना सुनिश्चित करें.

    agentdesktopzipfile
    अनपैक की जाने वाली ज़िप फ़ाइल का नाम. यदि आप यहाँ एक .zip फ़ाइल नाम निर्दिष्ट करते हैं, तो यह पैकेज परिनियोजन प्रक्रिया के दौरान एक स्क्रीन जोड़ता है, जो आपको उस स्थान का चयन करने के लिए कहता है, जहाँ आप फ़ाइल की सामग्री को अनपैक करना चाहते हैं.

    इस गुण का उपयोग आमतौर पर Unified Service Desk for Dynamics 365 के लिए पैकेज बनाने हेतु किया जाता है. Unified Service Desk के बारे में अधिक जानकारी के लिए, Unified Service Desk 3.0 के लिए व्यवस्थापक मार्गदर्शिका देखें.

    agentdesktopexename
    ज़िप फ़ाइल में उस .exe या .msi फ़ाइल या URL नाम, जिसे परिनियोजन प्रक्रिया के अंत में इनवोक किया जाना है.

    इस गुण का उपयोग आमतौर पर Unified Service Desk के लिए पैकेज बनाने हेतु किया जाता है.

    crmmigdataimportfile
    उस डिफ़ॉल्ट कॉन्फ़िगरेशन डेटा फ़ाइल (.zip) का नाम, जिसे कॉंफ़िगरेशन माइग्रेशन उपकरण का उपयोग करके निर्यात किया गया है.

    • आप स्थानीय भाषा ID (LCID) के आधार पर कॉन्फ़िगरेशन डेटा फ़ाइल का वह स्थानीयकृत संस्करण भी आयात कर सकते हैं, जिसे Package Deployer के चलाए जाने के दौरान नई रनटाइम सेटिंग का उपयोग करके निर्दिष्ट किया गया था. पैकेज में कॉन्फ़िगरेशन डेटा फ़ाइल के स्थानीयकृत संस्करणों को निर्दिष्ट करने के लिए <cmtdatafile> नोड (इसके बारे में बाद में बताया गया है) का उपयोग करें और उसके बाद रनटाइम सेटिंग का उपयोग करके निर्दिष्ट की गई स्थानीय भाषा ID के आधार पर कॉन्फ़िगरेशन डेटा फ़ाइल को आयात करने के लिए तर्क निर्दिष्ट करने हेतु OverrideConfigurationDataFileLanguage तरीके (इसके बारें में बाद में बताया गया है) का उपयोग करें. आप एक समय में पैकेज ़ का उपयोग करके एक से अधिक कॉन्फ़िगरेशन डेटा फ़ाइल आयात नहीं कर सकते.

    • (ऑन-प्रिमाइसेस) के लिए Dataverse , यदि आपकी कॉन्फ़िगरेशन डेटा फ़ाइल में उपयोगकर्ता जानकारी है, और स्रोत और लक्ष्य इंस्टेंस दोनों एक ही सक्रिय निर्देशिका डोमेन पर हैं, तो उपयोगकर्ता जानकारी लक्ष्य Dataverse Dataverse इंस्टेंस में आयात की जाती है। किसी भिन्न डोमेन पर उपयोगकर्ता जानकारी को Dataverse (on-premises) आवृत्ति पर आयात करने के लिए, आपको कॉन्फ़िगरेशन माइग्रेशन उपकरण का उपयोग करके जनरेट की गई उपयोगकर्ता मानचित्र फ़ाइल (.xml) को शामिल करना होगा और उसे usermapfilename एट्रिब्यूट का उपयोग करके कॉन्फ़िगरेशन डेटा फ़ाइल के साथ <cmtdatafile> नोड में निर्दिष्ट करना होगा, जिसके बारे में आगे बताया गया है. उपयोगकर्ता जानकारी इंस्टेंस में Dataverse आयात नहीं की जा सकती.
      <solutions> नोड
      <configsolutionfile> नोड की एक सरणी शामिल है, जो आयात किए जाने वाले समाधान का वर्णन करती है. इस नोड के तहत समाधान का क्रम उस क्रम को इंगित करता है, जिसमें समाधानों को लक्ष्य Dataverse आवृत्ति पर आयात किया जाएगा.

      <configsolutionfile> नोड
      अलग-अलग समाधानों और आयात किए जाने वाले प्रत्येक समाधान के लिए निम्न जानकारी को निर्दिष्ट करने हेतु, <solutions> नोड के अंतर्गत इस नोड का उपयोग करें:

    • solutionpackagefilename: अपने समाधान की .zip फ़ाइल का नाम निर्दिष्ट करें. आवश्यक.

    • overwriteunmanagedcustomizations: किसी ऐसे समाधान को आयात करने के दौरान, जो पहले से लक्ष्य Dynamics 365 आवृत्ति में मौजूद हो, निर्दिष्ट करें कि किसी अप्रबंधित अनुकूलन को ओवरराइट करना है या नहीं. यह विशेषता वैकल्पिक है, और यदि आप इस विशेषता को निर्दिष्ट नहीं करते हैं, तो डिफ़ॉल्ट रूप से मौजूदा समाधान में अप्रबंधित अनुकूलन लक्ष्य Dynamics 365 इंस्टेंस पर बनाए रखे जाते हैं।

    • publishworkflowsandactivateplugins: निर्दिष्ट करें कि समाधान को आयात करने के बाद लक्ष्य Dynamics 365 आवृत्ति में कार्यप्रवाह और सक्रिय प्लग-इन प्रकाशित करने हैं या नहीं. यह विशेषता वैकल्पिक है, और यदि आप यह विशेषता निर्दिष्ट नहीं करते हैं, तो डिफ़ॉल्ट रूप से वर्कफ़्लोज़ प्रकाशित होते हैं और लक्ष्य Dynamics 365 इंस्टेंस पर समाधान आयात करने के बाद प्लग-इन सक्रिय होते हैं.

      आप कई <configsolutionfile> नोड जोड़कर, पैकेज में एकाधिक समाधान फ़ाइल नाम जोड़ सकते हैं. उदाहरण के लिए, यदि आप तीन समाधान फ़ाइलों को आयात करना चाहते हैं, तो उन्हें नीचे दिखाए गए तरीके से जोड़ें:

    
    <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> की एक सरणी और <zipimportdetails> नोड शामिल होते हैं, जिनका उपयोग क्रमशः आयात की जाने वाली व्यक्तिगत फ़ाइलों और ज़िप फ़ाइलों को वर्णित करने के लिए किया जाता है.

    <configimportfile> नोड
    Dataverse में आयात की जाने वाली फ़ाइल को वर्णित करने के लिए, <configimportfile> के अंतर्गत इस नोड का उपयोग करें. आप कई <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>  
    
    

    नीचे समर्थित एट्रिब्यूट की सूची दी गई है:

    विशेषता विवरण
    filename उस फ़ाइल का नाम, जिसमें आयात डेटा शामिल है. यदि फ़ाइल .zip फ़ाइल है, तो .zip फ़ाइल में मौजूद प्रत्येक फ़ाइल के लिए <zipimportdetail> नोड वाला एक <zipimportdetails> नोड मौजूद होना चाहिए.
    filetype यह मान csv, xml या zip हो सकता है.
    associatedmap इस फ़ाइल के साथ उपयोग किए जाने वाले Dataverse आयात डेटा मानचित्र का नाम. यदि रिक्त है, तो इस फ़ाइल के लिए सिस्टम निर्धारित आयात डेटा मानचित्र नाम का उपयोग करने का प्रयास करता है.
    importtoentity प्रक्रिया के अंत में इनवोक किया जाने वाला लिंक प्रदान करने के लिए, ज़िप फ़ाइल या URL या .msi फ़ाइल में exe का नाम हो सकता है.
    datadelimiter आयात फ़ाइल में उपयोग किए जाने वाले डेटा सीमांकक का नाम. मान्य मान एकल उद्धरण या डबल उद्धरण हैं।
    fielddelimiter आयात फ़ाइल में उपयोग किए जाने वाले फ़ील्ड सीमांकक का नाम. मान्य मान अल्पविराम या बृहदान्त्र, या एकल उद्धरण हैं।
    enableduplicatedetection इंगित करता है कि डेटा आयात पर डुप्लिकेट डिटेक्शन नियम सक्षम करने हैं या नहीं. मान्य मान सही या गलत हैं.
    isfirstrowheader यह दर्शाने के लिए उपयोग किया जाता है कि आयात फ़ाइल की पहली पंक्ति में फ़ील्ड नाम हैं. मान्य मान true या false हैं.
    isrecordownerateam इंगित करता है कि आयात पर रिकॉर्ड की स्वामी एक टीम होनी चाहिए या नहीं. मान्य मान true या false हैं.
    owneruser उस उपयोगकर्ता ID को इंगित करता है, जो रिकॉर्ड की स्वामी होनी चाहिए. डिफ़ॉल्ट मान वर्तमान में लॉगिन किया हुआ उपयोगकर्ता है.
    waitforimporttocomplete यदि true है, सिस्टम आगे बढ़ने से पहले आयात के पूरा होने की प्रतीक्षा करता है. यदि false है, तो वह जॉब को कतारबद्ध करता है और आगे बढ़ जाता है.

    <zipimportdetails> नोड
    इस नोड में <zipimportdetail> नोड एक सरणी है, जो उस ज़िप फ़ाइल में शामिल फ़ाइलों का वर्णन करती है, जिसका उपयोग Dynamics 365 में आयात करने के लिए किया जाता है.

    <zipimportdetail> नोड
    <configimportfile> नोड में निर्दिष्ट .zip फ़ाइल में किसी व्यक्तिगत फ़ाइल के बारे में जानकारी प्रदान करने के लिए, <zipimportdetails> नोड के अंतर्गत इस नोड का उपयोग करें.

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

    समर्थित एट्रिब्यूट की सूची नीचे दी गई है:

    विशेषता विवरण
    filename उस फ़ाइल का नाम, जिसमें आयात डेटा शामिल है.
    filetype यह मान csv या xml हो सकता है.
    importtoentity प्रक्रिया के अंत में इनवोक किया जाने वाला लिंक प्रदान करने के लिए, ज़िप फ़ाइल या url या .msi फ़ाइल में exe का नाम हो सकता है.

    <filesmapstoimport> नोड
    इस नोड में आयात किए जाने वाले <configmapimportfile> नोड की एक सरणी है. इस नोड में मैप फ़ाइलों का क्रम उस क्रम को इंगित करता है जिसमें वे आयात किए जाते हैं। डेटा मानचित्र के बारे में जानकारी के लिए, आयात करने के लिए डेटा मानचित्र बनाएँ देखें.

    <configimportmapfile> नोड
    Dataverse में आयात की जाने वाली व्यक्तिगत मानचित्र फ़ाइल के बारे में जानकारी प्रदान करने के लिए, <filesmapstoimport> नोड के अंतर्गत इस नोड का उपयोग करें.

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

    <cmtdatafiles> नोड
    इस नोड में नोड्स की <cmtdatafile> एक सरणी है जिसमें आयात की जाने वाली कॉन्फ़िगरेशन डेटा फ़ाइल का स्थानीयकृत संस्करण है.

    <cmtdatafile> नोड
    स्थानीय भाषा ID (आवश्यक) और उपयोगकर्ता जानकारी मानचित्र फ़ाइल (वैकल्पिक) के साथ स्थानीयकृत कॉन्फ़िगरेशन डेटा फ़ाइलों को निर्दिष्ट करने के लिए <cmtdatafiles> नोड के अंतर्गत इस नोड का उपयोग करें. उदाहरण के लिए:

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

    रनटाइम सेटिंग (इसके बारे में आगे बताया गया है) का उपयोग करके निर्दिष्ट किए गए स्थानीय भाषा ID (LCID) मान के आधार पर डिफ़ॉल्ट (crmmigdataimportfile में निर्दिष्ट) के बजाय स्थानीयकृत कॉन्फ़िगरेशन डेटा फ़ाइल को आयात करने के लिए आप OverrideConfigurationDataFileLanguage तरीके (इसके बारे में आगे बताया गया है) में अपना कस्टम तर्क परिभाषित कर सकते हैं.

  2. सभी सहेजें का चयन करें.

    निम्न xml नमूना 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>  
    
    

कस्टम कोड जोड़ें

आप कस्टम कोड जोड़ सकते हैं जो पर्यावरण में पैकेज के आयात से पहले, उसके दौरान और बाद में निष्पादित होता है. ऐसा करने के लिए, इन निर्देशों का अनुसरण करें.

  1. प्रोजेक्ट के रूट फ़ोल्डर में PackageTemplate.cs (या PackageImportExtension.cs) फ़ाइल संपादित करें.

  2. C# फ़ाइल में, आप निम्न कर सकते हैं:

    1. InitializeCustomExtension की ओवरराइड विधि परिभाषा में पैकेज प्रारंभ किए जाने पर, निष्पादित करने के लिए कस्टम कोड दर्ज करें.

      इस विधि का उपयोग करके उपयोगकर्ता पैकेज चलाने के दौरान रनटाइम पैरामीटर का उपयोग कर सकते हैं. एक डेवलपर के रूप में, आप RuntimeSettingsगुण का उपयोग करके अपने पैकेज में किसी भी रनटाइम पैरामीटर के लिए तब तक समर्थन जोड़ सकते हैं, जब तक कि आपके पास उपयोगकर्ता इनपुट के आधार पर उसे संसाधित करने का कोड हो.

      उदाहरण के लिए, निम्न नमूना कोड उस पैकेज के लिए SkipChecks नामक रनटाइम पैरामीटर सक्षम करता है, जिसके दो संभव मान हैं: सही या गलत. नमूना कोड जाँचता है कि उपयोगकर्ता ने 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");  
      }  
      

      यह कोड व्यवस्थापक को यह निर्दिष्ट करने के लिए आदेश पंक्ति या Import-CrmPackage cmdlet का उपयोग करने देता है कि पैकेज को आयात करने के लिए 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 उपयोग करके. यदि निर्दिष्ट भाषा की निर्दिष्ट स्थानीय ID (LCID) पैकेज में उपलब्ध भाषाओं की सूची में नहीं मिलती है, तो डिफ़ॉल्ट डेटा फ़ाइल आयात की जाती है.

      आप ImportConfig.xml फ़ाइल में <cmtdatafiles> नोड में कॉन्फ़िगरेशन डेटा के लिए उपलब्ध भाषाओं को निर्दिष्ट करते हैं. ImportConfig.xml फ़ाइल में, crmmigdataimportfile एट्रिब्यूट में डिफ़ॉल्ट कॉन्फ़िगरेशन डेटा आयात फ़ाइल निर्दिष्ट की जाती है.

      डेटा चेक (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";  
      }  
      

      यह लौटाया गया मान आपके पैकेज का नाम है जो Dynamics 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 निम्न मानों वाला एक एनम है:

    कार्यरत = 0
    पूर्ण = 1
    विफल = 2
    चेतावनी = 3
    अज्ञात = 4
    RaiseFailEvent(String, Exception) Function अपवाद संदेश के साथ वर्तमान स्थिति आयात को विफल करने के लिए उपयोग किया जाता है.
    IsRoleAssoicatedWithTeam(Guid, Guid) Function यह निर्धारित करने के लिए उपयोग किया जाता है कि भूमिका एक निर्दिष्ट टीम से संबद्ध है या नहीं.
    IsWorkflowActive(Guid) Function यह निर्धारित करने के लिए उपयोग किया जाता है कि निर्दिष्ट कार्यप्रवाह सक्रिय है या नहीं.
    PackageLog क्लास पॉइंटर यह पैकेज के लिए प्रारंभिक लॉगिंग इंटरफ़ेस हेतु एक पॉइंटर है. पैकेज द्वारा इस इंटरफ़ेस का उपयोग, पैकेज लॉग फ़ाइल पर संदेश और अपवाद लॉग करने के लिए किया जाता है.
    RootControlDispatcher गुण यह एक डिस्पैचर इंटरफ़ेस है, जिसका उपयोग पैकेज परिनियोजन के दौरान आपके नियंत्रण को अपने UI को रेंडर करने की अनुमति देने के लिए किया जाता है. किसी भी UI तत्व या आदेश को रैप करने के लिए इस इंटरफ़ेस का उपयोग करें. इसका उपयोग करने से पहले शून्य मानों के लिए इस चर की जांच करना महत्वपूर्ण है क्योंकि यह किसी मान पर सेट नहीं हो सकता है।
    CrmSvc गुण यह CrmServiceClient वह क्लास के लिए एक पॉइंटर है, जिसके पैकेज के लिए अनुमति प्राप्त है कि वह पैकेज के भीतर Dynamics 365 का समस्या निवारण करे. ओवरराइड विधियों में SDK विधियों और अन्य क्रियाओं को निष्पादित करने के लिए इस पॉइंटर का उपयोग करें.
    DataImportBypass गुण यह निर्दिष्ट करें कि क्या Dynamics 365 Package Deployer सभी डेटा आयात कार्रवाइयों को छोड़ देता है या नहीं, जैसे Dataverse नमूना डेटा, फ़्लैट फ़ाइल डेटा और Configuration Migration टूल से निर्यात किए गए डेटा को आयात करना. सही या गलत निर्दिष्ट करें. false डिफ़ॉल्ट है.
    OverrideDataImportSafetyChecks गुण निर्दिष्ट करें कि क्या Dynamics 365 Package Deployer इसकी कुछ सुरक्षा जाँचों को बायपास करता है, जो आयात प्रदर्शन को बेहतर बनाने में मदद करता है. true या false निर्दिष्ट करें. false डिफ़ॉल्ट है.

    आपको इस गुण को केवल तभी सेट करना true चाहिए जब लक्ष्य Dataverse इंस्टेंस में कोई डेटा न हो.
  4. अपना प्रोजेक्ट सहेजें. अगला चरण पैकेज बनाना है.

खरीदें और परिनियोजित करें

निम्न अनुभाग वर्णन करते हैं कि पैकेज कैसे बनाएं और परिनियोजित करें.

निर्माण

आपके पैकेज का निर्माण आपके द्वारा उपयोग किए जा रहे उपकरण के आधार पर नीचे वर्णित है।

सीएलआई के साथ बनाए गए पैकेज का निर्माण करने के लिए, आप .csproj फ़ाइल को Visual Studio लोड कर सकते हैं, लेकिन इसके बजाय हम डॉटनेट कमांड और MSBuild का उपयोग करने जा रहे हैं। नीचे दिए गए उदाहरण में माना गया है कि वर्किंग डायरेक्टरी में *.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 फ़ोल्डर के अंतर्गत निम्न फ़ाइलों से बनता है.

  • <पैकेज नाम फ़ोल्डर> : फ़ोल्डर का नाम वही है जिसे आपने इस अनुभागके चरण 2.g में अपने पैकेज फ़ोल्डर नाम के लिए परिवर्तित किया है कस्टम कोड जोड़ें. इस फ़ोल्डर में आपके पैकेज के लिए सभी समाधान, कॉन्फ़िगरेशन डेटा, फ़्लैट फ़ाइलें और सामग्री है.

नोट

आप एक .NET फोल्डर (जैसे, net472) देख सकते हैं जिसमें एक pdpublish फोल्डर है. आपकी DLL और अन्य प्रोजेक्ट फ़ाइलें उस pdpublish फ़ोल्डर में हैं.

  • <PackageName>.dll: असेंबली में आपके पैकेज के लिए कस्टम कोड होता है. डिफ़ॉल्ट रूप से, असेंबली का नाम आपके प्रोजेक्ट का नाम ही होता है.

परिनियोजित करें

पैकेज बनाने के बाद, आप Package Deployer उपकरण, Windows PowerShell या CLI कमांड का उपयोग करके उसे Dataverse आवृत्ति पर परिनियोजित कर सकते हैं.

सर्वश्रेष्ठ व्यवहार

Package Deployer पैकेजों के साथ काम करते समय पालन करने के लिए कुछ सर्वोत्तम अभ्यास युक्तियों की सूची नीचे दी गई है.

पैकेज बनाना

पैकेज बनाते समय, डेवलपर्स को चाहिए:

  • सुनिश्चित करें कि पैकेज असेंबली पर हस्ताक्षर किए गए हैं.

पैकेज परिनियोजित करें

पैकेज परिनियोजित करते समय, Dataverse व्यवस्थापकों को निम्न क्रिया करनी चाहिए:

  • साइन की गई पैकेज एसेंबली पर ज़ोर देना चाहिए, ताकि आप किसी एसेंबली को वापस उसके स्रोत में ट्रैक कर सकें.
  • उत्पादन इंस्टेंस पर चलाने से पहले, एक प्रीप्रोडक्शन इंस्टेंस पर पैकेज का परीक्षण करें, अधिमानतः उत्पादन इंस्टेंस की एक दर्पण छवि।
  • पैकेज को परिनियोजित करने से पहले उत्पादन इंस्टेंस का बैकअप लें.

इसे भी देखें

समाधान पैकेजर साधन