2010-07-20 19 views
10

मेरे पास एक प्रोग्राम है जो एक WiX इंस्टॉलर के साथ स्थापित करता है।वाईएक्स इंस्टॉलर अनइंस्टॉल करने पर फ़ाइलों को हटाएं लेकिन अपग्रेड पर नहीं

प्रोग्राम स्वयं [CommonAppDataFolder] \ [MyAppName] \ निर्देशिका में कई फाइलें बनाता है। इन फ़ाइलों में सभी का एक ही एक्सटेंशन है (इसे कॉल करें .dat)।

को अपग्रेड करते हुए, मैं इन फ़ाइलों को बनाए रखना चाहता हूं।
अनइंस्टॉल करने पर, मैं इन फ़ाइलों को हटा देना चाहता हूं।

मैं वर्तमान में इतनी के रूप में फ़ाइलों को हटाने हूँ:

<Directory Id='CommonAppDataFolder'> 
    <Directory Id='MyCommonAppDataFolder' Name='MyAppName'> 
    <Component Id='RemoveFilesComponent' Guid='71cb0cd8-8459-4a8f-89b7-f00977aa7b70'> 
     <RemoveFile Id='RemoveFiles' Name='*.dat' On='uninstall'/> 
    </Component> 
    </Directory> 
</Directory> 

और मैं इस उन्नयन की सुविधा के लिए है:

<InstallExecuteSequence> 
    <RemoveExistingProducts After='InstallInitialize'/> 
</InstallExecuteSequence> 

अब, जब मैं स्थापना रद्द, .dat फ़ाइलें सही निकाल दिए जाते हैं।
हालांकि, जब मैं अपग्रेड करता हूं, तो .dat फ़ाइलों को भी हटा दिया जाता है। मुझे लगता है क्योंकि एक अपग्रेड पिछले संस्करण पर एक अनइंस्टॉल कर रहा है।

क्या मैं इस समस्या को सही तरीके से देख रहा हूं? अनइंस्टॉल करने पर उन्हें हटाते समय, मैं अपग्रेड पर फ़ाइलों को कैसे बनाए रख सकता हूं?

+0

क्या आपको कभी इस समस्या का समाधान मिला है। – darbid

+0

बहुत समय पहले, लेकिन मुझे याद नहीं है। मुझे लगता है कि मैं अनइंस्टॉल करने के बाद बस CommonAppDataFolder में फ़ाइलों को छोड़ देता हूं। उत्तर देने के लिए – MatthewKing

+0

धन्यवाद मैट। – darbid

उत्तर

1

एक विकल्प एक मामूली अद्यतन पर स्विच करना होगा। इसमें बहुत सारे प्रतिबंध हैं इसलिए यह जितना आसान लगता है उतना आसान नहीं है।

+1

आपका उत्तर विक्स जलने के शुरुआती चरणों में या उससे पहले हो सकता है, इसलिए मुझे आश्चर्य है कि क्या आप अब इस प्रश्न का उत्तर अलग-अलग कर सकते हैं या नहीं। 2 एमएसआई पैकेज के साथ एक विक्स बूटस्ट्रैपर बनाने का एक संभावित समाधान है। उनकी .dat फ़ाइलें दूसरे एमएसआई पैकेज में होंगी और इसे अपग्रेड नहीं किया जाएगा। – darbid

+0

मूल पैकेज अलग-अलग भेजे जाने पर बहुत सी चीजें की जा सकती हैं। मैंने यह मानने का उत्तर दिया कि उसे जो भेज दिया गया है उससे निपटने की जरूरत है। –

+0

@RobMensching क्या प्रेषित पैकेजों का जवाब नहीं है? (वर्तमान में विकास पर) यह बहुत उपयोगी होगा। धन्यवाद! – Eli

2

क्या आपने RemoveExistingProducts में कोई शर्त जोड़ने का प्रयास किया है? क्या यही मुझे करना होगा।

<RemoveExistingProducts After='InstallInitialize'>(NOT UPGRADINGPRODUCTCODE) AND (Installed)</RemoveExistingProducts> 
+1

ऐसा लगता है कि मैं क्या चाहता हूं, लेकिन निश्चित रूप से इसका मतलब है कि पिछले संस्करण को अपग्रेड करने पर हटाया नहीं गया है। उदाहरण के लिए, मैं 'एप्लिकेशन जोड़ें या निकालें' नियंत्रण कक्ष में अपने एप्लिकेशन के लिए कई प्रविष्टियों के साथ समाप्त होता हूं। कोई कामकाज? – MatthewKing

+1

आप इंस्टॉलफिनलाइज़ करने के बाद मौजूदा उत्पाद को निकालने का प्रयास कर सकते हैं। यह किसी भी बदली गई फ़ाइलों और रजिस्ट्री सेटिंग्स को हटा देगा लेकिन जो आपने नहीं किया है उसे रखें। आईटी को आपके साथ उत्पाद आईडी या संस्करण भी करना पड़ सकता है। ओएस शायद सोचता है कि यह पूरी तरह से एक अलग कार्यक्रम है। –