إنشاء حزم للأداة Package Deployer

تسمح الأداة Package Deployer للمسؤولين بنشر الحزم على مثيلات Microsoft Dataverse. بإمكان الحزمة أن تتكون من أي من العناصر التالية أو من جميع هذه العناصر:

  • ملف حلول Dataverse واحدًا أو أكثر.
  • ملفات ثابتة أو ملفات بيانات تم تصديرها من أداة ترحيل التكوين‬. لمزيد من المعلومات حول الإدارة، راجع نقل بيانات التكوين عبر المثيلات والمؤسسات باستخدام أداة ترحيل التكوين.
  • التعليمات البرمجية المخصصة التي يمكن تشغيلها قبل نشر الحزمة أو أثناء أو بعد نشر الحزمة إلى مثيل Dataverse.
  • محتوى HTML المحدد للحزمة والذي يمكن عرضه في بداية عملية نشر الحزمة ونهايتها. قد يكون ذلك الأمر مفيداً لتوفير وصف للحلول والملفات التي يتم نشرها في الحزمة.

يُستخدم قالب Visual Studio 2015 أو قالب من إصدار لاحق (متوفر للتنزيل) لإنشاء الحزم. بعد إنشاء حزمة، استخدام الأداة Package Deployer لنشر الحزمة إلى مثيل Dataverse.

المتطلبات الأساسية

  • تأكد من أن لديك كافة الحلول والملفات الجاهزة التي ترغب في تضمينها في الحزمة.
  • Microsoft .NET Framework 4.6.2
  • Visual Studio 2015 أو إصدار لاحق
  • NuGet Package Manager لـ Visual Studio 2015
  • قوالب Microsoft Dynamics CRM SDK لـ Visual Studio التي تحتوي على قالب الحزمة. يمكنك الحصول عليه من خلال تنزيل قوالب Microsoft Dynamics CRM SDK والنقر نقرًا مزدوجًا فوق ملف CRMSDKTemplates.vsix لتثبيت القالب في Visual Studio.

إنشاء حزمة

قم بتنفيذ الخطوات الخمس التالية لإنشاء حزمة:

الخطوة 1: إنشاء مشروع باستخدام القالب

  1. ابدأ تشغيل Visual Studio، وقم بإنشاء مشروع جديد.

  2. في مربع الحوار مشروع جديد، قم بما يلي:

    1. من قائمة القوالب المثبتة، قم بتوسيع Visual C#‎، وحدد قوالب Dynamics 365 SDK.
    2. تأكد من تحديد .NET Framework 4.6.2.
    3. حدد حزمة Dynamics 365.
    4. حدد موقع المشروع واسمه انقر فوق موافق.

    مشروع جديد لإنشاء حزمة مخصصة.

الخطوة 2: إضافة ملفاتك إلى المشروع

  1. في جزء مستكشف الحلول، أضف حلولك وملفاتك تحت مجلد PkgFolder.
  2. بالنسبة لكل تضيفه تحت المجلد PkgFolder ، في الجزء خصائص قم بتعيين القيمة نسخ إلى دليل الإخراج إلى نسخ دائمًا. بإمكان هذا الإجراء أن يضمن توفر ملفك في الحزمة التي تم إنشاؤها.

الخطوة 3: تحديث ملفات HTML: الإنجليزية ولغات أخرى

  1. في جزء مستكشف الحلول، قم بتوسيع PkgFolder > المحتوى > en-us. ستعثر على مجلدين باسم EndHTML وWelcomeHTML. تحتوي هذه المجلدات على ملفات HTML والملفات المقترنة التي تتيح لك عرض المعلومات في نهاية عمليه نشر الحزمة وبدايتها. قم بتحرير الملفات في مجلد HTML لهذه المجلدات لإضافة معلومات لحزمتك.

  2. يمكنك أيضًا إضافة ملفات HTML في حزمتك بلغات أخرى بحيث يظهر المحتوى في HTML باللغة المستندة إلى الإعدادات المحلية لجهاز الكمبيوتر الخاص بالمستخدم. للقيام بذلك:

    1. أنشئ نسخة من المجلد en-us تحت PkgFolder > المحتوى.
    2. أعد تسمية المجلد المنسوخ باللغة المناسبة. على سبيل المثال، فيما يتعلق باللغة الإسبانية، غيّر اسم المجلد إلى es-ES.
    3. قم بتعديل محتوى ملفات HTML لإضافة محتوى باللغة الإسبانية.

الخطوة 4: تحديد قيم التكوين الخاصة بالحزمة

  1. قم بتعريف تكوين الحزمة عن طريق إضافة معلومات حول حزمتك في الملف ImportConfig.xml المتوفر في PkgFolder. انقر نقرًا مزدوجًا فوق الملف لفتحه للتحرير. توفر القائمة التالية معلومات عن كل معلمة وعقدة في ملف التكوين.

    installsampledata
    True أو false. إذا كانت القيمة true، فقم بتثبيت عينة البيانات في مثيل Dataverse. هذه هي عينة البيانات نفسها التي يمكنك تثبيتها من منطقة الإعدادات > إدارة البيانات في Dataverse.

    waitforsampledatatoinstall
    صواب‏‎ أو خطأ‏‎. إذا كانت القيمة صواب، وإذا تم تعيين installsampledata إلى صواب‏‎ أيضًا، فانتظر تثبيت عينة البيانات قبل نشر الحزمة.

    ملاحظة

    تأكد من تعيين installsampledata إلى صواب إذا كنت تقوم بتعيين waitforsampledatatoinstall إلى صواب‏‎.

    agentdesktopzipfile
    اسم الملف الخاص بملف zip لفك الحزمة. إذا قمت بتحديد اسم ملف zip. هنا، فسيضيف شاشة اثناء عملية نشر الحزمة التي تطالبك بتحديد موقع حيث تريد فك حزمة محتويات الملف.

    ويستخدم هذا عاده لإنشاء حزم Unified Service Desk لـ Dynamics 365. لمزيد من المعلومات حول Unified Service Desk، راجع دليل إدارة Unified Service Desk 3.0.

    agentdesktopexename
    اسم ملف exe. أو msi. الموجودين في ملف zip أو URL لاستدعائه في نهاية عملية النشر.

    ويستخدم هذا عاده لإنشاء حزم Unified Service Desk.

    crmmigdataimportfile
    اسم الملف لملف بيانات التكوين الافتراضي (zip.) الذي تم تصديره باستخدام أداة ترحيل التكوين.

    • يمكنك أيضًا استيراد إصدار مترجم من ملف بيانات التكوين استنادًا إلى معرف الإعدادات المحلية (LCID) المحدد باستخدام إعدادات وقت التشغيل الجديدة اثناء تشغيل Package Deployer. استخدم العقدة <cmtdatafile> (سيتم شرحها لاحقًا) لتحديد الإصدارات المترجمة من ملف بيانات التكوين في حزمة ثم استخدم أسلوب OverrideConfigurationDataFileLanguage (سيتم شرحه لاحقًا) لتحديد منطق استيراد ملف بيانات التكوين استنادًا إلى معرف الإعدادات المحلية المحدد باستخدام إعدادات وقت التشغيل. لا يمكن استيراد أكثر من ملف بيانات تكوين باستخدام حزمة في المرة الواحدة.

    • بالنسبة إلى Dataverse (محلي)، إذا كان ملف بيانات التكوين يحتوي على معلومات المستخدم، وفي حال وجود مثيلي Dataverse المصدر والهدف في مجال Active Directory نفسه، سيتم استيراد معلومات المستخدم إلى مثيل Dataverse الهدف. لاستيراد معلومات المستخدم إلى مثيل Dataverse (محلي) إلى مجال مختلف، يجب تضمين ملف خريطة المستخدم (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> التي يتم استخدامها لوصف الملفات الفردية وملفات zip التي يجب استيرادها على التوالي.

    عقدة <configimportfile>
    استخدم هذه العقدة تحت العقدة <configimportfile> لوصف ملف لاستيراده إلى Dataverse. يمكنك إضافة ملفات متعددة في حزمة من خلال إضافة العدد الذي تريده من عقد <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.، فيلزم وجود عقدة <zipimportdetails> مع عقدة <zipimportdetail> لكل ملف في ملف zip.
    filetype بإمكان هذا الملف أن يكون من النوع csv أو xml أو zip.
    associatedmap اسم مخطط بيانات الاستيراد في Dataverse الذي سيتم استخدامه مع هذا الملف. إذا كان فارغًا، فسيحاول استخدام اسم مخطط بيانات الاستيراد المحدد بواسطة النظام لهذا الملف.
    importtoentity بإمكانه أن يكون اسم ملف exe في ملف zip أو عنوان URL أو ملف msi. لتوفير ارتباط لاستدعائه في نهاية العملية.
    datadelimiter اسم محدِّد البيانات المستخدم في ملف الاستيراد. القيم الصالحة هي علامة اقتباس فردية أو علامة اقتباس مزدوجة.
    fielddelimiter اسم محدِّد الحقل المستخدم في ملف الاستيراد. القيم الصالحة هي الفاصلة أو النقطتين أو علامة الاقتباس الفردية.
    enableduplicatedetection للإشارة إلى ما إذا كان يجب تمكين قواعد الكشاف عن التكرارات عند استيراد البيانات. القيم الصالحة هي صواب أو خطأ.
    isfirstrowheader يُستخدم للإشارة إلى أن الصف الأول من ملف الاستيراد يحتوي على أسماء الحقول. القيم الصالحة هي true أو false.
    isrecordownerateam يُشير إلى ما إذا كان يجب على مالك السجل الذي سيتم استيراده أن يكون فريقًا. القيم الصالحة هي true أو false.
    owneruser يشير إلى معرف المستخدم الذي يجب أن يمتلك السجلات. القيمة الافتراضية هي المستخدم الذي سجل دخوله في الوقت الحالي.
    waitforimporttocomplete إذا كانت القيمة true، ينتظر النظام حتى اكتمال الاستيراد قبل المتابعة. وإذا كانت القيمة false، فسيضع المهام في قائمة انتظار ويتابع.

    عقدة <zipimportdetails>
    تحتوي هذه العقدة على صفيف من عقد <zipimportdetail> التي تصف الملفات المضمنة في ملف zip يستخدم للاستيراد إلى Dynamics 365.

    عقدة <zipimportdetail>
    استخدم هذه العقدة أسفل العقدة <zipimportdetails> لتوفير معلومات حول ملف فردي في ملف zip. محدد في العقدة <configimportfile>.

    <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 بإمكانه أن يكون اسم ملف exe في ملف zip أو عنوان URL أو ملف msi. لتوفير ارتباط لاستدعائه في نهاية العملية.

    عقدة <filesmapstoimport>
    تحتوي هذه العقدة على صفيف من عقد <configmapimportfile> التي سيتم استيرادها. يشير ترتيب ملفات الخرائط في هذه العقدة إلى الترتيب الذي يتم استيرادها به. للحصول على معلومات حول خرائط البيانات، راجع إنشاء خرائط بيانات لاستيرادها.

    عقدة <configimportmapfile>
    استخدم هذه العقدة تحت العقدة <filesmapstoimport> لتوفير معلومات حول ملف خريطة فردي لاستيراده إلى Dataverse.

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

    عقدة <cmtdatafiles>
    تحتوي هذه العقدة على صفيف من عقد <cmtdatafile> التي تحتوي على إصدار مترجم من ملف بيانات التكوين الذي سيتم استيراده.

    عقدة <cmtdatafile>
    استخدم هذه العقدة تحت العقدة <cmtdatafiles> لتحديد ملفات بيانات التكوين المترجمة إلى جانب معرف الإعدادات المحلية (مطلوب) وملف خريطة معلومات المستخدم (اختياري). على سبيل المثال:

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

    يمكنك تعريف منطقك المخصصة في أسلوب OverrideConfigurationDataFileLanguage (سيتم شرحه لاحقًا) لاستيراد ملف بيانات تكوين مترجم بدلاً من الافتراضي المترجم (محدد في crmmigdataimportfile) استنادًا إلى قيمة معرف الإعدادات المحلية (LCID) المحددة باستخدام إعدادات وقت التشغيل (سيتم شرحه لاحقًا).

  2. انقر فوق حفظ الكل.

    يمثل ما يلي محتويات عينة ملف 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>  
    
    

الخطوة 5: تعريف التعليمات البرمجية المخصصة لحزمتك

  1. في جزء مستكشف الحلول، انقر نقرًا مزدوجًا فوق الملف PackageTemplate.cs في الجذر لتحريره.

  2. في الملف PackageTemplate.cs، يمكنك القيام بما يلي:

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

      يتيح هذا للمسؤول استخدام سطر الأوامر أو 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. إذا لم يتم العثور على معرف الإعدادات المحلية (LCID) المحدد للغة المحددة في قائمه اللغات المتوفرة في الحزمة، سيتم استيراد ملف البيانات الافتراضي.

      يمكنك تحديد اللغات المتوفرة لبيانات التكوين في العقدة <cmtdatafiles> في الملف ImportConfig.xml. يتم تحديد ملف استيراد بيانات التكوين الافتراضي في السمة crmmigdataimportfile في الملف ImportConfig.xml.

      بإمكان تخطي عمليات التحقق من البيانات (OverrideDataImportSafetyChecks = صواب) أن يكون فعالاً إذا كنت متأكدًا من أن مثيل Dataverse الهدف لا يحتوي على أي بيانات.

    6. أدخل تعليمات برمجية مخصصة يتم تنفيذها بعد اكتمال عملية استيراد الحل في تعريف أسلوب تجاوز AfterPrimaryImport. يتم الآن استيراد الملفات الثابتة المتبقية التي لم يتم استيرادها في السابق قبل بدء استيراد الحل.

    7. قم بتغيير الاسم الافتراضي لمجلد الحزمة من PkgFolder إلى اسم الحزمة الذي تريده. للقيام بذلك، أعد تسمية المجلد PkgFolderفي جزء مستكشف الحلول، ثم قم بتحرير القيمة المرتجعة تحت الخاصية 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) الوظيفة تُستخدم لإنشاء عنصر تقدم جديد في واجهة المستخدم (UI).
    RaiseUpdateEvent(String, ProgressPanelItemStatus) الوظيفة تُستخدم لتحديث التقدم الذي نشأ بواسطة استدعاء CreateProgressItem(String).

    ProgressPanelItemStatus عبارة عن تعداد بالقيم التالية:

    العمل = 0
    مكتمل = 1
    فاشل = 2
    تحذير = 3
    غير معروف = 4
    RaiseFailEvent(String, Exception) الوظيفة تُستخدم لإفشال استيراد الحالة الحالية مع رسالة استثناء.
    IsRoleAssoicatedWithTeam(Guid, Guid) الوظيفة تُستخدم لتحديد ما إذا كان الدور مرتبطًا بفريق محدد.
    IsWorkflowActive(Guid) الوظيفة تُستخدم لتحديد ما إذا كان سير العمل المحدد نشطًا.
    PackageLog مؤشر الفئة هذا مؤشر إلى واجهة التسجيل التي تمت تهيئتها للحزمة. تستخدم هذه الواجهة بواسطة حزمة لتسجيل الرسائل والاستثناءات لملف سجل الحزمة.
    RootControlDispatcher الخاصية هذه واجهة مرسل يتم استخدامها للسماح لعنصر التحكم بعرض واجهة المستخدم الخاصة به أثناء نشر الحزمة. استخدم هذه الواجهة لتمكين التفاف عناصر أو أوامر واجهة المستخدم. من الضروري التحقق من هذا المتغير للقيم الفارغة قبل استخدامه إذا من المحتمل أن يكون معيّنًا أو غير معيّن إلى قيمة.
    CrmSvc الخاصية هذه الخاصية عبارة عن مؤشر إلى الفئة CrmServiceClient التي تتيح للحزمة أن تتعامل مع Dynamics 365 من داخل الحزمة. استخدمها لتنفيذ أساليب SDK والإجراءات الأخرى في الأساليب التي تم تجاوزها.
    DataImportBypass الخاصية استخدم هذه الخاصية لتحديد ما إذا كان Dynamics 365 Package Deployer يتخطى كافة عمليات استيراد البيانات مثل استيراد عينة بيانات Dataverse وبيانات الملفات الثابتة والبيانات التي تم تصديرها من أداة ترحيل التكوين. حدد القيمة صواب أو خطأ. القيمة الافتراضية هي false.
    OverrideDataImportSafetyChecks الخاصية استخدم هذه الخاصية لتحديد ما إذا كان Dynamics 365 Package Deployer سيتجاوز بعض عمليات التحقق من السلامة، مما يساعد على تحسين أداء الاستيراد. حدد true أو false. القيمة الافتراضية هي false.

    يجب عليك تعيين هذه الخاصية إلى true فقط إذا لم يتضمن مثيل Dataverse الهدف أي بيانات.
  4. احفظ مشروعك، ثم قم ببنائه (بناء‏‎ > بناء حل) لإنشاء الحزمة. حزمتك هي الملفات التالية تحت المجلد <Project> \Bin\Debug

    • المجلد <PackageName>: اسم المجلد هو نفسه الذي قمت بتغييره لاسم مجلد الحزمة في الخطوة 2.ز من هذا القسم (الخطوة 5: تعريف التعليمات البرمجية المخصصة لحزمتك). يحتوي هذا المجلد على جميع الحلول وبيانات التكوين والملفات الثابتة والمحتويات لحزمتك.

    • <PackageName>.dll: يحتوي التجميع على التعليمات البرمجية المخصصة لحزمتك. يكون اسم التجميع بشكل افتراضي هو نفس اسم مشروع Visual Studio الخاص بك.

      الخطوة التالية هي نشر حزمتك.

نشر حزمة

بعد إنشاء حزمة، يمكنك نشرها على مثيل Dataverse باستخدام الأداة Package Deployer أو Windows PowerShell.

يتم توزيع الأداة Package Deployer كجزء من حزمة Microsoft.CrmSdk.XrmTooling.PackageDeployment NuGet. لتنزيل الأداة Package Deployer، راجع تنزيل الأدوات من NuGet.

للحصول على معلومات مفصلة، راج نشر الحزم باستخدام Package Deployer أو Windows PowerShell.

‏‫أفضل الممارسات لإنشاء الحزم ونشرها

أثناء إنشاء الحزم، يجب على المطورين التأكد من التوقيع على تجميعات الحزم.

أثناء نشر الحزم، يجب على مسؤولي Dataverse:

  • الإصرار على تجميع حزمة موقّعة كي تتمكن من تتبع تجميع ما إلى مصدره.
  • اختبار الحزمة على مثيل ما قبل الإنتاج (يفضل أن يكون صورة طبق الأصل من مثيل الإنتاج) قبل تشغيلها على مثيل إنتاج.
  • إجراء نسخ احتياطي لمثيل الإنتاج قبل نشر الحزمة.

راجع أيضًا

أداة إنشاء حزم الحلول

ملاحظة

هل يمكنك إخبارنا عن تفضيلات لغة التوثيق الخاصة بك؟ شارك في استطلاع قصير. (يرجى ملاحظة أن هذا الاستطلاع باللغة الإنجليزية)

سيستغرق الاستطلاع حوالي سبع دقائق. لا يتم جمع أي بيانات شخصية (بيان الخصوصية).