मेरे पास एक उत्पाद है जो एक एमएसआई के रूप में पैक किया गया है। जब मेरे ग्राहक मौजूदा संस्करण के शीर्ष पर मेरे उत्पाद का एक नया संस्करण स्थापित करते हैं तो यह कस्टम वीबीएस एक्शन की वजह से अच्छी तरह से काम नहीं कर रहा है, जैसा कि नीचे बताया गया है। मेरा सवाल है: मैं अपने एमएसआई को कैसे बदल सकता हूं ताकि शीर्ष पर स्थापित करने से पहले किसी भी मौजूदा संस्करण की पूरी तरह से अनइंस्टॉल हो जाए?एमएसआई इंस्टॉल के हिस्से के रूप में पिछले संस्करण को अनइंस्टॉल कैसे करें?
विस्तार है:
मैं विभिन्न विभिन्न कंपनियों में तैनात संस्करणों की एक किस्म के साथ एक उत्पाद है। साल में लगभग एक बार मेरे प्रत्येक ग्राहक को मेरे उत्पाद का एक नया संस्करण प्राप्त होगा और उनकी कंपनी के वर्कस्टेशन पर तैनात किया जाएगा। तैनाती के लिए ज़िम्मेदार लोग पसंद करेंगे कि वे अपने इंस्टॉल पैकेज में एक अनइंस्टॉल चरण शामिल करने के बजाय पुराने संस्करण के शीर्ष पर नया संस्करण स्थापित कर सकते हैं।
एमएसआई इंस्टॉल कुछ फ़ाइलों को [CommonApplicationData] \ MyApp फ़ोल्डर में बनाता है और लिखता है। निष्पादन के दौरान एप्लिकेशन [CommonApplicationData] \ MyApp फ़ोल्डर में और फ़ाइलें बनाता है। अनइंस्टॉल करने के दौरान मुझे इन सभी फ़ाइलों को हटाना होगा। चूंकि वे एमएसआई द्वारा स्थापित नहीं हैं, इसलिए वे स्वचालित रूप से अनइंस्टॉल नहीं किए जाते हैं, इसलिए मैंने एक vbs स्क्रिप्ट बनाई है जो उस फ़ोल्डर और इसमें कुछ भी हटा देती है।
...
RemoveFiles
RemoveFolders
CreateFolders
MoveFiles
InstallFiles
PatchFiles
If REMOVE="ALL" Then
REM line below is my custom script
call VBScript From Installation (MyApp_UninstallCleanup)
End
DuplicateFiles
BindImage
CreateShortcuts
...
अब तक तो अच्छा है और यह ठीक काम करता है जब &: अनइंस्टॉल स्थापित करने: मैं ExecuteDeferred में है कि vbs निष्पादित करने के लिए एक कमांड डाल दिया। हालांकि, अगर मैं किसी मौजूदा संस्करण के शीर्ष पर अपने उत्पाद का एक नया संस्करण स्थापित करता हूं तो ऐसा लगता है कि चीजें इस क्रम में होती हैं: ए) नया संस्करण स्थापित करें, [CommonApplicationData] \ MyApp फ़ोल्डर में और [प्रोग्राम फ़ाइलें] में विभिन्न फ़ाइलें बनाएं \ MyApp ..., पुराने संस्करण की फ़ाइलों को ओवरराइट करना b) मेरे vbs चलाएं, [CommonApplicationData] \ MyApp फ़ोल्डर
मेरे पास मेरे नए एमएसआई में अपग्रेड तालिका में सूचीबद्ध पुराने संस्करणों के लिए GUID है, और इस कस्टम स्क्रिप्ट के अलावा अपग्रेड प्रक्रिया ठीक काम करती प्रतीत होती है।
उत्पाद स्वयं बहुत छोटा है इसलिए यह ठीक होगा अगर इंस्टॉलर हमेशा नए संस्करण को स्थापित करने से पहले पिछले संस्करणों को हटा देता है। वर्कस्टेशन पर कोई उपयोगकर्ता सेटिंग्स नहीं है जिसे बनाए रखने की आवश्यकता है और फ़ाइल आकार बड़े नहीं हैं। इसलिए सादगी के लिए मैं चाहता हूं कि पिछले संस्करणों को केवल बिट्स के साथ अपडेट किए जाने के बजाय अनइंस्टॉल किया जाए।
क्या कोई तरीका है कि मैं अपना नया एमएसआई बदल सकता हूं ताकि यह पहले पिछले संस्करणों को अनइंस्टॉल कर सके?
विशेष रूप से, मेरे पास ऐसी कई कंपनियां हैं जिनके पास एमएसआई का मौजूदा संस्करण स्थापित है जिसमें कस्टम vbs शामिल है। तो समाधान वास्तव में एक होना चाहिए जो मौजूदा स्थापित एमएसआई से निपट सकता है।
मैंने एमएसआई बनाने के लिए बुद्धिमान स्थापना एक्सप्रेस 7.0 का उपयोग किया है।
धन्यवाद !!
(पोस्ट की गई here)