2009-12-16 12 views
6

में मौजूद नहीं है तो कॉपी करें मेरे पास एक कॉन्फ़िगरेशन फ़ाइल, myapp.exe.config है, जिसे मैं केवल तब स्थापित करना चाहता हूं जब यह पहले से मौजूद न हो। यही है, मैं किसी मौजूदा कॉन्फ़िगरेशन फ़ाइल को ओवरराइट नहीं करना चाहता हूं। यह वाईएक्स में कैसे किया जा सकता है?वाईएक्स

उत्तर

12

क्या आप का वर्णन है (अंत में मैं सेटिंग्स, होने चूक और ओवरराइड और इतने पर के साथ और अधिक परिष्कृत कुछ करना होगा। लेकिन इस बीच में मैं सिर्फ एक अल्पकालिक ठीक रहा हूँ।) डिफ़ॉल्ट व्यवहार अगर फ़ाइल किसी घटक के keypath है। उदाहरण के लिए, निम्न घटक स्थापित नहीं किया जाएगा अगर foo.config पहले से मौजूद है (या एक वर्सन फाइल के मामले में, अगर एक बराबर या उच्च संस्करण संख्या के साथ एक फ़ाइल पहले से मौजूद में):

<Component Id="foo.config"> 
    <File Source="foo.config"/> 
</Component> 

नोट अगर आपके पास है कि आपके घटक में कई फाइलें, तो केवल कीपैथ हो सकती है। आप फ़ाइल के KeyPath विशेषता को yes पर सेट करके इसे नियंत्रित कर सकते हैं। लेकिन अनुशंसित रणनीति प्रति घटक केवल एक फ़ाइल है, जिसमें फ़ाइल स्वचालित रूप से घटक कीपैथ बन जाती है।

संपादित करें: ध्यान दें कि यह डिफ़ॉल्ट व्यवहार REINSTALLMODE property के साथ ओवरराइड किया जा सकता है। आप orca के साथ अपना एमएसआई खोलना चाहते हैं और देख सकते हैं कि यह संपत्ति संपत्ति तालिका में सेट की जा रही है या नहीं।

+1

धन्यवाद। यह पता चला है कि मैंने गलत सवाल पूछा है। नया इंस्टॉल करने से पहले मेरे इंस्टॉलर को अनइंस्टॉल करना होगा। (ट्यूटोरियल मुझे आश्वासन देता है कि यह मामूली अपग्रेड के लिए पूरी तरह से सामान्य है।) समस्या यह है कि कॉन्फ़िगरेशन फ़ाइल को हटाया जा रहा है भले ही इसे उपयोगकर्ता द्वारा संशोधित किया गया हो। मुझे इसकी जांच करनी होगी। –