2009-04-02 7 views
14

मैं बात पर जोर देना कि एक निश्चित रजिस्ट्री मान स्थापना के बाद से मौजूद चाहते हैं, तो मैं निम्नलिखित घटक कहा:वाईएक्स: रजिस्ट्री मान को अनइंस्टॉल करने से हटाने से कैसे रोकें?

<Component Id="RegistryEntryContextMenuOdt" Guid="4BA5BA24-4F65-4BDF-99EB-CB4B947F31A9" DiskId="1" KeyPath="yes"> 
    <RegistryKey Id="RegKeyOdt" Root="HKCR" Action="create" Key=".odt"> 
     <RegistryValue Type="string" Value="openDocument.WriterDocument.1" /> 
    </RegistryKey> 
</Component> 

कुंजी/मान पहले से ही स्थापना से पहले सेट किया जा सकता है। हालांकि, मैं चाहता हूं कि मान मेरे विशिष्ट मूल्य पर सेट हो, यानी यह मेरे मूल्य के साथ ओवरराइट हो जाएगा।

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

कृपया ध्यान दें कि कुंजी को अनइंस्टॉल करने पर हटाया नहीं गया है। ऐसा लगता है कि यह सही ढंग से काम करता है क्योंकि मैंने Action="create" को RegistryKey तत्व पर निर्दिष्ट किया है।

क्या RegistryValue के लिए शायद एक ही सेटिंग है जो मूल्य बनाएगी लेकिन इंस्टॉल पर इसे हटाएगी?

अद्यतन: एचकेसीआर के तहत दोनों रजिस्ट्री कुंजियां मशीन चौड़ी सेटिंग हैं, यानी वे रजिस्ट्री की HKLM \ सॉफ़्टवेयर \ क्लासेस शाखा से उत्पन्न होती हैं।

उत्तर

23

आप यह सुनिश्चित कर सकते हैं कि आपका घटक केवल तभी स्थापित किया गया है जब Component element की NeverOverwrite विशेषता का उपयोग करके रजिस्ट्री प्रविष्टि मौजूद नहीं है। NeverOverwrite के लिए wix प्रलेखन से:

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

आप भी इसे स्पष्ट है कि रजिस्ट्री प्रविष्टि घटक कुंजी पथ है बनाने के लिए yes को Registry तत्व पर KeyPath विशेषता निर्धारित करने की आवश्यकता हो सकती है।

यदि आप रजिस्ट्री मान सेट करना चाहते हैं, भले ही यह पहले से मौजूद है, लेकिन आप इसे अनइंस्टॉल करने के लिए नहीं हटाना चाहते हैं, तो आप इसके बजाय घटक तत्व के Permanent विशेषता का उपयोग कर सकते हैं।

+0

धन्यवाद, यह बहुत उपयोगी है। मुझे इसे जांचने दें :-) –

+1

+1 कीपैथ टिप्पणी के लिए +1! –

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

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