2011-12-20 8 views
6

पर रजिस्ट्री सेटिंग्स को बनाए रखना हम अपने उत्पादों में से किसी एक के लिए इंस्टॉलर बनाने के लिए वाईएक्स 3.5 का उपयोग कर रहे हैं। सादगी के लिए, हम एक प्रमुख उन्नयन के माध्यम से संस्करण उन्नयन संभाल, इसलिए जैसे:वाईएक्स - बड़े अपग्रेड

<MajorUpgrade AllowSameVersionUpgrades="yes" DowngradeErrorMessage="Laterversionfound" /> 

हम अनुसूची विशेषता है, जिसका अर्थ RemoveExistingProducts क्रिया "InstallValidate" के बाद चलाना चाहिए निर्दिष्ट नहीं कर रहे - पुराने संस्करण की एक पूरी स्थापना रद्द अर्थ नया संस्करण स्थापित करने से पहले, होगा।

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

मेरे रजिस्ट्री प्रमुख घटक इस तरह दिखेगा:

<Component Id="regserver" Guid="[guid]"> 
    <RegistryValue Root="HKLM" Key="Software\Our Company\Our Product" Name="Server" Value="" Type="string" KeyPath="yes" /> 
</Component> 

मैं घटकों के लिए "हाँ" NeverOverwrite संपत्ति की स्थापना की कोशिश की है, लेकिन इस कुंजी को पुनः करने में नाकाम रहने के दुर्भाग्यपूर्ण प्रभाव पड़ता है - शायद क्योंकि यह यह जांचने के लिए जांचें कि से पहले कुंजी अनइंस्टॉल होती है (जो स्पष्ट रूप से वे करते हैं), फिर उन्हें अनइंस्टॉल करने के साथ हटा दिया जाता है, लेकिन फिर से नहीं बनाया जाता है।

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

मेरा अगला कदम एक अलग बिंदु पर RemoveExistingProducts विकल्प को शेड्यूल करने का प्रयास करना है, हालांकि मैं अपने कुछ कस्टम कार्यों के साथ कुछ निश्चित दर्द की उम्मीद कर रहा हूं।

तो मेरा सवाल यह है कि, क्या हमें आवश्यकता है, इसे हटाने के लिए कोई तरीका है, जहां RemoveExistingProducts निर्धारित है?

+0

क्या आप मूल इंस्टॉलर को बदलने में सक्षम हैं? यदि ऐसा है तो आप रजिस्ट्री घटक को स्थायी बना सकते हैं, जिसका अर्थ है कि इसे अनइंस्टॉल नहीं किया जाएगा। –

+0

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

उत्तर

9

गुणों में मौजूदा मानों को लोड करने के लिए रजिस्ट्रीशर्च का उपयोग करें, फिर उन मानों को लिखने के लिए रजिस्ट्रीवैल्यू में [PROPERTY] का उपयोग करें। यदि कोई पुराना उत्पाद इंस्टॉल नहीं है, तो गुण उनके डिफ़ॉल्ट मान रखेंगे।

+0

बिल्कुल सही - धन्यवाद बॉब –

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