मेरे पास कई समाधान हैं, जिनमें से प्रत्येक समाधान हैकम से कम एक प्रोजेक्ट (बता दें कि वे केवल विंडोज़ एप्लीकेशन प्रोजेक्ट हैं)। फिर, मैंने प्रत्येक विंडो समाधान के लिए एक इंस्टॉलर (एमएसआई) समाधान का उत्पादन किया। तो, मेरे पास myWindowsSolution1 और myInstallerForMyWindowsSolution1 (file1.msi), myWindowsSolution2 और myInstallerForMyWindowsSolution2 (file2.msi) है ...
अब वे पूरी तरह से इंस्टॉलर्स को 1 में रखना चाहते हैंकेवल इंस्टॉलर। क्या स्वचालित रोलबैक खोए बिना ऐसा करना संभव है ??? मैंने जो प्रयास किया है वह प्रत्येक इंस्टॉलर फ़ाइल के माध्यम से लूप बनाने और फ़ाइल को निष्पादित करने के लिए एक समस्या है, समस्या यह है कि, यदि उनमें से एक विफल रहता है, तो पहले से ही स्थापित लोग स्थापित रहेंगे:
for (int i = 0; i < installers.Length; i++) {
Process p = Process.Start(installers[i]);
p.WaitForExit();
}
मैंने प्रत्येक msi फ़ाइल (पहले से exe में परिवर्तित) को myInstallerForMyWindowsSolution1 में CustomActions-> Install के तहत डालने की कोशिश की, लेकिन फिर से रोलबैक खो देता हूं।
सभी कोड को केवल बहुत बड़े समाधान में विलय करना अंतिम विकल्प होगा।
अग्रिम में धन्यवाद।
उत्तर:
जवाब के लिए 3 № 1एक तरीका एक बड़ा "रैपर" इंस्टॉलेशन बनाना है जिसमें सभी अलग-अलग सेटअप MSI शामिल हैं। आप उल्लेख करते हैं कि आपने ऐसा कुछ करने की कोशिश की, जैसे कि, "मैंने प्रत्येक msi फ़ाइल (पहले से exe में परिवर्तित) myInstallerForMyWindowsSolution1 में CustomActions-> इंस्टॉल के तहत डालने की कोशिश की, लेकिन फिर से मैं रोलबैक खो देता हूं।"
ये रही चीजें: आपको न केवल प्रत्येक इंस्टॉलेशन के लिए कस्टम एक्शन बनाने की आवश्यकता है, बल्कि एप्लिकेशन को अनइंस्टॉल करने के लिए भी। इस प्रकार, यदि स्थापना के दौरान कस्टम क्रियाओं में से एक विफलता कोड देता है, तो MSI रोलबैक प्रक्रिया के साथ शुरू होगा, जिसमें किसी भी एम्बेडेड MSI को अन-इंस्टॉल करना शामिल होगा। सुनिश्चित करें कि आपके स्थापित कस्टम क्रियाओं से विफलता कोड रोलबैक को ट्रिगर करते हैं, और यह कि विफलताओं से अनइंस्टॉल कस्टम क्रियाओं के कोड नहीं होते हैं।