WIX: لا يمكن التعامل مع مربع اختيار "تشغيل تطبيق بعد التثبيت" = 0

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

  •  20-09-2019
  •  | 
  •  

سؤال

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

هنا جزء من السيناريو WIX الخاص بي.

<CustomAction Id="StartConfigManagerOnExit"
              FileKey="ParamsShower.exe"
              ExeCommand=""
              Execute="immediate"
              Impersonate="yes"
              Return="asyncNoWait" />
<CustomAction Id="StartUpgradeConfigOnExit"
              FileKey="ParamsShower.exe"
              ExeCommand="/upgrade"
              Execute="immediate"
              Impersonate="yes"
              Return="asyncNoWait" />
<UI>
    <Publish Dialog="ExitDialogEx"
             Control="Finish"
             Order="1"
             Event="DoAction"
             Value="StartConfigManagerOnExit">LAUNCHAPPONEXIT = 1</Publish>
    <Publish Dialog="ExitDialogEx"
             Control="Finish"
             Order="1"
             Event="DoAction"
             Value="StartUpgradeConfigOnExit">LAUNCHAPPONEXIT = 0</Publish>
    <Publish Dialog="ExitDialogEx"
             Control="Finish"
             Event="EndDialog"
             Value="Return"
             Order="999">1</Publish>

    <Dialog Id="ExitDialogEx"
            Width="370"
            Height="270"
            Title="[ProductName] Setup">
        <Control Id="LaunchCheckBox"
                 Type="CheckBox"
                 X="135"
                 Y="190"
                 Width="220"
                 Height="40"
                 Property="LAUNCHAPPONEXIT"
                 Hidden="yes"
                 CheckBoxValue="1"
                 Text="Launch an app">
           <Condition Action="show">NOT Installed</Condition>
        </Control>
    </Dialog>
    <InstallUISequence>
       <Show Dialog="ExitDialogEx"
             OnExit="success" />
    </InstallUISequence>
    <AdminUISequence>
        <Show Dialog="ExitDialogEx"
              OnExit="success" />
    </AdminUISequence>
</UI>

يبدأ التثبيت التطبيق عند تعيين LaunchCheckBox. لكنه لا يعمل في حالة عدم ضبط مربع الاختيار.

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

المحلول

لقد وجدت إجابة. يبدو أن خاصية مربعات الاختيار ليست مساوية لـ 0 عند عدم تحديدها. ما عليك سوى تغيير حالة "launchapponexit = 0" مع "عدم إطلاق apponexit" يحل الموقف.

جعل الافتراضي:

<Property Id="LAUNCHAPPONEXIT" Value="1" />

ثم قم بتصحيح الشروط (التي تم تصحيحها بتعليق Sascha):

<Publish Dialog="ExitDialogEx" Control="Finish" Order="1" Event="DoAction" Value="StartConfigManagerOnExit">LAUNCHAPPONEXIT</Publish>
<Publish Dialog="ExitDialogEx" Control="Finish" Order="1" Event="DoAction" Value="StartUpgradeConfigOnExit">NOT LAUNCHAPPONEXIT</Publish>

نصائح أخرى

لا تحتوي مربع الاختيار على أي قيمة على الإطلاق عند عدم التحقق منها ، لذا بدلاً من استخدام الترميز 1/0 الذي يمكنك استخدامه ببساطة

LAUNCHAPPONEXIT

و

Not LAUNCHAPPONEXIT

تحتاج إلى إضافة تهيئة الإجراء المخصص لممتلكاتك ،

<CustomAction ID="InitLAUNCHAPPONEXIT" 
              Property="LAUNCHAPPONEXIT" 
              Value="0" 
              Return="check"/> 

ثم أضفه إلى installuisequence قبل إظهار مربع حوار الخروج ، أو ببساطة إضافة خاصية إلى المنتج <Property Id="LAUNCHAPPONEXIT" Value="0" />.

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