2009-07-21 14 views
14

मैं सरल विंडोज इंटेलर बनाने की कोशिश कर रहा हूं, और मुझे नहीं पता कि इससे कैसे निपटें। मेरे पास दो विशेषताएं हैं - सुविधा 1 और सुविधा 2। मैं सुविधा 2 को केवल तभी स्थापित करना चाहता हूं जब उपयोगकर्ता ने सुविधा 1 को स्थापित किया हो। तो मैंने कोशिश की:वाईएक्स में सुविधाओं में स्थितियों का उपयोग कैसे करें?

<Feature Id='core' Title='Core' 
     Description='ØMQ 1.0.0 core functionality and C++ API' Level='1'> 
    <ComponentRef Id='Core_include' /> 
    <ComponentRef Id='Core_bin' /> 
    <ComponentRef Id='Core_lib' /> 
    <ComponentRef Id='Core_zmq' /> 
    <ComponentRef Id='cpp_bin' /> 
</Feature> 

<Feature Id='core_perf' Title='core_perf' Description='0MQ core perf' Level='999'> 
    <Condition Level="0">NOT (&amp;core = "3")</Condition> 
     <ComponentRef Id='cpp_perf' /> 
</Feature> 

लेकिन यदि उपयोगकर्ता सुविधा कोर का चयन करता है तो यह सुविधा core_perf स्थापित नहीं करता है।

मैं इसे कैसे ठीक कर सकता हूं?

+0

"केवल अगर" के सख्त अर्थ से यह फीचर 1 और फीचर 2 की तरह लगता है वास्तव में केवल एक विशेषता है। क्या आपका वास्तव में मतलब है कि सुविधा 2 केवल तभी उपलब्ध होना चाहिए जब सुविधा 1 स्थापित हो? – Jared

+0

हाँ, यह सही है। मैं सुविधा 2 स्थापित करना चाहता हूं केवल अगर सुविधा 1 स्थापित है। –

+0

व्याख्या करने के लिए - मेरे आवेदन में कई अलग-अलग विशेषताएं हैं और फिर मेरे पास उदाहरण अनुभाग है जो इन सुविधाओं के उपयोग के उदाहरण दिखा रहा है। मैं चाहता हूं कि कोई "फीचर 1" और फीचर "उदाहरण" (सभी सुविधाओं के उदाहरणों को शामिल करता है) चुनता है, तो मैं सुविधा "सुविधा 1_examples" स्थापित करना चाहता हूं। –

उत्तर

14

आपको अपनी हालत को अपनी घटक परिभाषा में स्थानांतरित करने और उपयोग करने की आवश्यकता है! (फ़ीचर राज्य) & (फ़ीचर कार्रवाई) के बजाय इतना है कि यह काम करता है जब आप फिर से चल रहा है दूसरी बार स्थापित द्वारा उदाहरण जोड़ने का प्रयास:

<Component Id="example1"> 
    <Condition>!feature1 = 3</Condition> 
</Component> 

<Component Id="example2"> 
    <Condition>!feature2 = 3</Condition> 
</Component> 

<Feature Id="feature1"> 
</Feature> 

<Feature Id="feature2"> 
</Feature> 

<Feature Id="examples"> 
    <ComponentRef Id="example1" /> 
    <ComponentRef Id="example2" /> 
</Feature> 
+3

यह दस्तावेज कहां है? फ़ीचर राज्य =! और फ़ीचर एक्शन = &। – Cheeso

+10

http://msdn.microsoft.com/en-us/library/aa368012(VS.85).aspx http://www.tramontana.co.hu/wix/lesson6.php#6.2 – Jared

+0

यह अच्छा हो सकता है कुछ घटकों के साथ, लेकिन यदि आपके पास बड़ी संख्या में घटक हैं तो प्रबंधन करना मुश्किल है। –

6

मुझे लगता है कि यह सबसे अच्छा हो सकता है अगर feature1 माता पिता थे सुविधा 2 का। फिर सुविधा 2 स्थापित नहीं किया जा सकता है जब तक सुविधा 1 स्थापित नहीं किया जाएगा। कोई शर्त आवश्यक नहीं है।

<Feature Id='core' Title='Core' 
     Description='ØMQ 1.0.0 core functionality and C++ API' Level='1'> 
    <ComponentRef Id='Core_include' /> 
    <ComponentRef Id='Core_bin' /> 
    <ComponentRef Id='Core_lib' /> 
    <ComponentRef Id='Core_zmq' /> 
    <ComponentRef Id='cpp_bin' /> 
    <Feature Id='core_perf' Title='core_perf' Description='0MQ core perf' 
      Level='999'> 
     <ComponentRef Id='cpp_perf' /> 
    </Feature> 
</Feature> 
संबंधित मुद्दे