2010-02-02 8 views
6

मेरे पास एक वाईएक्स इंस्टॉलर है जिसमें प्रति-फीचर कस्टम क्रियाएं हैं जिन्हें अनइंस्टॉल करने पर निष्पादित करने की आवश्यकता है। अभी मैं एक समस्या में भाग रहा हूं जहां क्रियाएं निष्पादित होती हैं कि उपयोगकर्ता द्वारा वास्तव में सुविधा स्थापित की गई थी या नहीं। कस्टम क्रियाएं विफल होती हैं क्योंकि वे कुछ संसाधनों की मौजूदगी की अपेक्षा करते हैं और फिर संपूर्ण इंस्टॉल टूटी हुई स्थिति में फंस जाता है।केवल एक स्थापित सुविधा को अनइंस्टॉल किया जा रहा है, तो आप केवल WiX में एक कस्टम कार्रवाई निष्पादित करते हैं?

कस्टम कार्रवाई चलाने का सही तरीका क्या है और केवल तभी यदि इसकी संबंधित सुविधा अनइंस्टॉल की जा रही है? मैंने स्निपेट को शामिल किया है जिसे मैं वर्तमान में नीचे उपयोग कर रहा हूं, अगर यह मदद करता है।

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles"><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") AND (&FeatureName<=2)]]></Custom> 

उत्तर

16

हालत वाक्य रचना की details और examples

+0

उसने ऐसा किया। धन्यवाद! – dskiles

+0

हाय सैमुअल आप कृपया अपने उद्देश्य को विस्तृत कर सकते हैं! [सीडीएटीए [(UPGRADINGPRODUCTCODE) अपने स्निपेट – sttaq

+0

आईआईआरसी में, मैंने शामिल किया क्योंकि यह प्रश्न में मूल स्निपेट में था। इसका उद्देश्य यह सुनिश्चित करना है कि कस्टम एक्शन केवल तभी चलाया जाए जब एक विशिष्ट सुविधा हटा दी जा रही हो, न कि जब पूरे उत्पाद को अपग्रेड किया जा रहा हो। –

-3

ऐसा लगता है कि कस्टम क्रियाएं टूट गई हैं और अनुपलब्ध संसाधनों को सही ढंग से प्रबंधित नहीं कर रही हैं।

यदि कोई उपयोगकर्ता मैन्युअल रूप से फ़ाइलों को हटा देता है तो सीए इसे कैसे संभालेगा? क्या होता है यदि कोई उपयोगकर्ता एप्लिकेशन फ़ोल्डर को हटा देता है, और उसके बाद उसे एआरपी के माध्यम से निकालने का प्रयास करता है?

क्या होता है यदि कोई उपयोगकर्ता पूरे एप्लिकेशन को अनइंस्टॉल किए बिना सुविधा को हटा देता है? आप सीए के दीर्घकालिक फिक्सिंग से बेहतर होंगे।

+0

कि मेरे सवाल का जवाब नहीं है के लिए

<Custom Action="LaunchUninstallCustomAction" Before="RemoveFiles"> <![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (&FeatureName=2) AND (!FeatureName=3)]]> </Custom> 

MSDN देखें का प्रयास करें। मुझे पता है कि यह करने का सबसे अच्छा तरीका नहीं है, लेकिन मैं विरासत कोड से बाध्य हूं जिसे मैं टालना नहीं कर सकता। यह देखते हुए कि यह करने का सबसे अच्छा तरीका नहीं है, बाधाओं को देखते हुए इसे करने का सबसे अच्छा तरीका क्या है? – dskiles

+0

ऐसी स्थिति हो सकती है जब कोई कस्टम चरण यह पता नहीं लगा सकता कि उसे चलाने के लिए या पर्यावरण पर आधारित नहीं होना चाहिए। – Dennis

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