كيفية عرض تحذير عدم الحظر لنظام التشغيل في Wix؟

StackOverflow https://stackoverflow.com/questions/1810910

  •  06-07-2019
  •  | 
  •  

سؤال

لقد قمت بالفعل بحظر تثبيت برنامجنا على أنظمة التشغيل التي من المعروف أنها لا تعمل على النحو التالي:

<Condition Message="This software needs Windows XP or newer.">
   <![CDATA[VersionNT >= 501]]>
</Condition>

الآن أود أيضًا أن أفعل ذلك عرض تحذير عدم الحظر إذا حاول المستخدم تثبيت البرنامج على نظام تشغيل (VersionNT + Service Pack) غير مدعوم بشكل صريح، على الرغم من أنه قد عمل.

على سبيل المثال، نحن ندعم بشكل صريح فقط أحدث حزمة خدمة لكل نظام تشغيل.

كيف يمكنني عرض مثل هذا التحذير؟

هل كانت مفيدة؟

المحلول

لقد عالجت هذه المشكلة في 3 أجزاء:

  1. تحديد خاصية OswarningText التي يتم تعيينها فقط عندما يجب تقديم تحذير
  2. تأليف شاشة تحذير مخصصة
  3. إدراج شاشة التحذير المخصصة في تسلسل واجهة المستخدم إذا لزم الأمر

1.تحديد خاصية OSWarningText

أولاً، أعلن عن الخاصية وأعطها القيمة "unset" افتراضيًا:

  <Property Id="OSWarningText" Value="{}"/>

لإنشاء القيمة الفعلية للخاصية، قم بتعيين خاصية وسيطة لكل تحذير محتمل.تأكد من عدم تداخل شروط كل تحذير:

  <SetProperty Id="OSWarningText1" After="AppSearch"
     Value="Detected XP SP [ServicePackLevel]. SP3 or higher is recommended.">
     <![CDATA[(VersionNT = 501) AND NOT (ServicePackLevel >= 3)]]>
  </SetProperty>

  <SetProperty Id="OSWarningText2" After="SetOSWarningText1"
     Value="Detected Vista SP [ServicePackLevel]. SP2 or higher is recommended.">
     <![CDATA[(VersionNT = 600) AND NOT (ServicePackLevel >= 2)]]>
  </SetProperty>

على افتراض عدم تداخل الشروط، يمكننا تكثيف التحذيرات بأمان في خاصية واحدة مثل هذا:

  <SetProperty Id="OSWarningText" After="SetOSWarningText2"
     Value="[OSWarningText1][OSWarningText2]" />    

2.تأليف شاشة تحذير مخصصة.

وهذا مشابه ل مثال لإضافة مربع اختيار لاختصار سطح المكتب.انسخ أحد تعريفات الحوار الموجودة من ملف مصادر ويكس, ، على سبيل المثال. InstallDirDlg.wxs وإعادة تسميته إلى WarningDlg.wxs.

قم بتعيين معرف الحوار على Id="WarningDlg.قم بإزالة عناصر التحكم غير الضرورية واستبدلها بصورة تحذيرية ونص OSWarningText المحدد مسبقًا:

<Control Id="OSWarning" Type="Text" X="100" Y="80" Width="250" Height="60"
    NoPrefix="yes" Text="[OSWarningText]" />

<Control Id="WarningIcon" Type="Icon" X="20" Y="60" Width="64" Height="64"
   Text="Warning.ico" >
   <Binary Id="Warning.ico" SourceFile="..\icons\warning.ico"/>
</Control>

الفكرة هي إنشاء شيء مثل هذا:

3.إدراج شاشة التحذير المخصصة في تسلسل واجهة المستخدم

نحتاج الآن إلى التأكد من عرض شاشة التحذير بين مربع حوار الترحيب ومربع حوار اتفاقية الترخيص، ولكن فقط إذا كان هناك تحذير فعليًا ليتم عرضه.وهذه حالة خاصة للعموم تسلسلات المعالج المتفرعة مشكلة.

مرة أخرى، انسخ تسلسل واجهة المستخدم المحدد مسبقًا من مصادر wix، على سبيل المثال. WixUI_InstallDir.wxs وأعد تسمية معرف واجهة المستخدم إلى Id="MyWixUI".قم بالإشارة إلى هذا في ملف wxs الرئيسي الخاص بك باسم <UIRef Id="MyWixUI" />.ابحث الآن عن معالجات الأحداث الخاصة بالزر التالي WelcomeDlg وقم بتحريرها.

يمكنك تعيين الخصائص استجابةً لضغطة زر وشرط إضافي، ويمكنك إظهار مربع الحوار التالي بناءً على خاصية.سنستفيد من ذلك للتعامل مع الزر التالي WelcomeDlg مثل هذا:

  1. أعد تعيين خاصية WelcomedLg_Next إلى "إلغاء عملية"
  2. قم بتعيين خاصية WelcomedLg_Next على "WarningDLG" ولكن فقط إذا تم تعيين OswarningText
  3. set the WelcomeDlg_Next property to "LicenseAgreementDlg" but only if OSWarningText is NOT set.
  4. إظهار الحوار المقدم من خلال WelxicedLg_Next ، إذا تم تعيين الخاصية بشكل صحيح.

يبدو رمز Wix للقيام بذلك كما يلي:

        <Publish Dialog="WelcomeDlg" Control="Next"
            Property="WelcomeDlg_Next" Value="{}"
            Order="1">1</Publish>
        <Publish Dialog="WelcomeDlg" Control="Next"
            Property="WelcomeDlg_Next" Value="WarningDlg"
            Order="2">OSWarningText</Publish>
        <Publish Dialog="WelcomeDlg" Control="Next"
            Property="WelcomeDlg_Next" Value="LicenseAgreementDlg"
            Order="3">NOT OSWarningText</Publish>
        <Publish Dialog="WelcomeDlg" Control="Next"
            Event="NewDialog" Value="[WelcomeDlg_Next]"
            Order="4">WelcomeDlg_Next</Publish>

ثم قم بما يعادل زر "الرجوع" لاتفاقية الترخيص:يجب أن يعود إلى شاشة الترحيب إذا لم يكن هناك تحذير، أو إلى شاشة التحذير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top