2012-07-31 6 views
5

मैं पिछले संस्करण पहले से स्थापित होने पर कस्टम संवाद दिखाने के लिए अपने इंस्टॉलर को कस्टमाइज़ करना चाहता हूं: स्वागत संवाद के बाद उपयोगकर्ता को एक कस्टम संवाद OldVersionDlg देखना चाहिए जो पिछले संस्करण को मिला था और अनइंस्टॉल किया जाएगा खुद ब खुद।विक्स: यदि पिछले संस्करण को मिला तो कस्टम संवाद दिखाएं

लेकिन कुछ कारणों से संपत्ति UpgradeVersion तत्व द्वारा निर्धारित null जब मैं इसे UI/Publish Dialog में स्थिति में जांचता हूं।

यहां आवश्यक कोड स्निपेट हैं।

Product.wxs:

<Product Id="*" Version="$(var.Version)" UpgradeCode="$(var.ProductId)" 
     Language="1033" Name="$(var.ProductFullName)" Manufacturer="$(var.Manufacturer)"> 
    <Package Description="$(var.ProductDescription)" InstallerVersion="200" Compressed="yes" 
      Manufacturer="$(var.Manufacturer)" /> 

    <Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" /> 
    <Upgrade Id="$(var.ProductId)"> 
    <UpgradeVersion Minimum="1.0.0.0" Maximum="$(var.Version)" 
        Property="PREVIOUSVERSIONSINSTALLED" 
        IncludeMinimum="yes" IncludeMaximum="no" /> 
    </Upgrade> 

    <InstallExecuteSequence> 
    <RemoveExistingProducts Before="InstallInitialize" /> 
    </InstallExecuteSequence> 
</Product> 

WixUI_Wizard.wxs:

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="OldVersionDlg">PREVIOUSVERSIONSINSTALLED</Publish> 
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg">NOT Installed</Publish> 

बटन अगला काम नहीं करता। मैंने लॉग इन किया है कि PREVIOUSVERSIONSINSTALLEDFindRelatedProducts के बाद सेट है। यदि मैं इसे में स्थितियों में उपयोग करता हूं Product.wxs तो सबकुछ ठीक है। लेकिन यूआई विन्यास में यह हमेशा null है।

किसी भी मदद के लिए धन्यवाद।

उत्तर

2

समस्या WixUI_Wizard.wxs में दूसरी पंक्ति के कारण हुई थी। किसी कारण से वाईएक्स हमेशा इसका इस्तेमाल करता है। तो, पिछले संस्करण की जाँच हम दूसरी शर्त से PREVIOUSVERSIONSINSTALLED बाहर करने की आवश्यकता को लागू करने:

<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="OldVersionDlg">PREVIOUSVERSIONSINSTALLED</Publish> 
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg">NOT Installed AND NOT PREVIOUSVERSIONSINSTALLED</Publish> 
+0

एक अन्य समाधान जोड़ने के लिए है प्रकाशित @ आदेश विशेषता /, और आदेश = "1" और दूसरा पहले संवाद सेट ऑर्डर करने के लिए = "2"। संभवतः क्या हो रहा था कि प्रकाशन घटना की स्थिति दोनों को सही साबित किया गया, और इसलिए एमएसआई इंस्टॉलर ने पहली प्रकाशित कार्रवाई को परिभाषित किया। ऑर्डर जोड़कर, यह इंस्टॉलर को बताता है कि निष्पादित करने की क्रिया अगर दोनों प्रकाशित ईवेंट में वास्तविक स्थितियां हों। एक नोट, ऑर्डर इवेंट काउंटर अंतर्ज्ञानी है, और वास्तव में यह उच्च ऑर्डर वैल्यू है जिसे दोनों स्थितियां सत्य होने पर प्राथमिकता दी जाती हैं। आप इसे वजन के रूप में और अधिक सोच सकते हैं, जहां उच्च वजन जीतता है। – pje

+0

@kirmir मुझे फ़ाइल WixUI_Wizard.wxs कहां मिल सकती है? आईटीएक्स की स्थापना के साथ आईटी आना चाहिए? मुझे यह नहीं मिला। क्या आप जानते हैं कि यह काम 3.10 संस्करण के साथ कैसे बनाया जाए? – misshomme

+0

@micmica, यह फ़ाइल मैन्युअल रूप से बनाई गई थी और यह संवाद के आदेश का वर्णन करती है। जब प्रश्न पूछा गया तो मैंने संस्करण 3.5 का उपयोग किया। नए संस्करण के बारे में नहीं जानते, लेकिन मुझे विश्वास है कि कोई अंतर नहीं होना चाहिए। –

संबंधित मुद्दे