उत्पाद तत्व के अंदर अपग्रेड तत्व, क्रिया के उचित शेड्यूलिंग के साथ संयुक्त रूप से आपके द्वारा अनइंस्टॉल करने के बाद होगा। उन सभी उत्पादों के उन्नयन कोड सूचीबद्ध करना सुनिश्चित करें जिन्हें आप हटाना चाहते हैं।
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="00000000-0000-0000-0000-000000000000">
<UpgradeVersion Minimum="1.0.0.0" Maximum="1.0.5.0" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
ध्यान दें, यदि आप अपने बिल्ड से सावधान हैं, तो आप लोगों को गलती से अपने उत्पाद के पुराने संस्करण को नए सिरे से स्थापित करने से रोक सकते हैं। यही अधिकतम क्षेत्र के लिए है। जब हम इंस्टॉलरों का निर्माण करते हैं, तो हम इस संस्करण को बनाए जाने वाले संस्करण के लिए अपग्रेड वर्जन सेट करते हैं, लेकिन इस परिदृश्य को रोकने के लिए शामिल करें = "नहीं"।
आपके पास RemoveExistingProducts के शेड्यूलिंग के बारे में विकल्प हैं। मैं इसे InstallFinalize (बजाय InstallInitialize के बाद दूसरों की सिफारिश की है) के बाद समयबद्धन पसंद करते हैं:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallFinalize"></RemoveExistingProducts>
</InstallExecuteSequence>
यह नई फ़ाइलों और रजिस्ट्री कुंजियों की प्रतिलिपि बनाए जाने तक उत्पाद के पिछले संस्करण को छोड़ देता है। यह मुझे पुराने संस्करण से नए में डेटा स्थानांतरित करने की अनुमति देता है (उदाहरण के लिए, आपने रजिस्ट्री से उपयोगकर्ता वरीयताओं के भंडारण को एक XML फ़ाइल में बदल दिया है, लेकिन आप विनम्र होना चाहते हैं और उनकी सेटिंग्स को स्थानांतरित करना चाहते हैं)। यह माइग्रेशन InstallFinalize से ठीक पहले आस्थगित कस्टम क्रिया में किया जाता है।
एक अन्य लाभ दक्षता है: यदि अपरिवर्तित फाइलें हैं, तो जब आप InstallFinalize के बाद शेड्यूल करते हैं तो Windows इंस्टालर उन्हें फिर से कॉपी करने से परेशान नहीं करता है। यदि आप InstallInitialize के बाद शेड्यूल करते हैं, तो पिछला संस्करण पूरी तरह से पहले हटा दिया जाता है, और फिर नया संस्करण स्थापित किया जाता है। इससे फ़ाइलों का अनावश्यक विलोपन और पुनरावृत्ति होती है।
अन्य शेड्यूलिंग विकल्पों के लिए, MSDN में RemoveExistingProducts मदद विषय देखें। इस सप्ताह, लिंक है: http://msdn.microsoft.com/en-us/library/aa371197.aspx