5

मैं अपने .NET उत्पाद के लिए इंस्टॉलर बनाने के लिए VS2008 इंस्टॉलर (प्लस एक कस्टम ओर्का एक्शन) का उपयोग कर रहा हूं।मैं अपने VS2008 x86 इंस्टॉलर को x64 पर x64 असेंबली कैसे इंस्टॉल कर सकता हूं?

मुझे हाल ही में पता चला है कि मैं उपयोग कर रहा था कि तीसरे पक्ष के असेंबली में से एक x86- विशिष्ट है (क्योंकि इसमें कुछ मूल कोड शामिल है); इस प्रकार, x64 ग्राहकों को स्टार्टअप पर क्रैश हो रहा था, असेंबली के बारे में त्रुटियों के साथ उनके मंच के लिए उचित नहीं है।

मैंने इस तरह के ग्राहक को इस तीसरे पक्ष की असेंबली के x64 संस्करण की एक प्रति भेजी, और उसे मौजूदा x86 एक पर कॉपी करने के लिए कहा। यह काम किया, मीठा! तो अब मुझे इंस्टॉलर को मेरे लिए यह करने की ज़रूरत है।

यह वास्तव में अनौपचारिक प्रतीत होता है :(आदर्श रूप से, मैं बस इस तीसरे पक्ष की असेंबली के x86 और x64 संस्करणों को शामिल करने के लिए इंस्टॉलर (जो x86 होगा, क्योंकि दोनों प्लेटफार्मों पर चल सकता है) स्थापित करना चाहते हैं, और स्थापित करें उचित एक। दूसरे शब्दों में, मैं एक एकल इंस्टॉलर चाहता हूं जो मेरे उपयोगकर्ताओं के जीवन को आसान बनाता है।

मैंने सोचा कि मैंने एमएसआई सशर्त बयानों और सभी का उपयोग करके यह काम किया है। लेकिन स्पष्ट रूप से नहीं ... वीएस -2008 सेटअप परियोजनाएं जब तक आप "x86" या "x64" निर्दिष्ट नहीं करते हैं, तब तक संकलित नहीं होंगे। यदि आप x86 निर्दिष्ट करते हैं, तो यह संकलन त्रुटि देता है जिसमें कहा गया है कि इसमें x64 असेंबली शामिल नहीं हो सकती है। यदि आप x64 निर्दिष्ट करते हैं, तो परिणाम x86 कंप्यूटर पर निष्पादित नहीं किया जा सकता डैन!

किसी को भी इस समस्या को पहले होना चाहिए था। दुर्भाग्यवश Google अनुपयोगी है, इसलिए मैं स्टैक ओवरफ्लो पर जाता हूं!

उत्तर

3

यदि मैं आपको सही ढंग से समझता हूं, तो आप एक फ़ाइल की प्रतिलिपि बनाना चाहते हैं यदि आप x86 प्लेटफ़ॉर्म पर स्थापित कर रहे हैं तो आप x86 और अलग फ़ाइल (उसी नाम के साथ) पर स्थापित कर रहे हैं।

सबसे पहले, आप 2 अलग-अलग प्लेटफ़ॉर्म के लिए एक एमएसआई नहीं बना सकते हैं, क्योंकि x64 एमएसआई बस x86 प्लेटफॉर्म पर नहीं चलेंगे और एक x86 एमएसआई को x64 प्लेटफॉर्म पर WOW64 का उपयोग करके इंस्टॉल किया जाएगा।

दूसरी ओर, आप एक x86 एमएसआई बना सकते हैं जिसमें फ़ाइल के 2 अलग-अलग संस्करण होते हैं और स्थापना के दौरान चुनिंदा रूप से एप्रोपिएट फ़ाइल की प्रतिलिपि बनाते हैं।

बिल्ड-इन वीएस -2008 एमएसआई जनरेटर के बजाय WIX (V3) का उपयोग करने का सबसे आसान तरीका है।WIX आपको ग्राहक की मशीन पर क्या इंस्टॉल हो जाता है और जहां, विभिन्न प्लेटफार्मों के लिए विभिन्न इंस्टॉलर और पूर्ण एमएसबिल्ड समर्थन को एक अतिरिक्त बोनस के रूप में उत्पन्न करने की क्षमता पर अधिक नियंत्रण देता है। (अधिक जानकारी के लिए http://wix.sourceforge.net देखें।)

यदि आप सोच रहे हैं कि WIX अभी भी बीटा में है, जेनरेट की गई एमएसआई फ़ाइलें पूरी तरह से ठीक हैं और मैं अभी तक एक बग में नहीं चला। (और मैं एक जीवित रहने के लिए सेटअप परियोजनाओं का विकास करता हूं।)

अंत में, यदि आप x64 प्लेटफ़ॉर्म पर x86 इंस्टॉलर चल रहा है तो आप संस्करणNT64 प्रॉपर्टी से जांच सकते हैं। यदि वह संपत्ति मौजूद है, तो आप x64 चला रहे हैं, अन्यथा आप x86 पर चल रहे हैं।

उम्मीद है कि इससे मदद मिलती है।

+0

धन्यवाद; यह सबसे अच्छा समाधान है, मुझे लगता है। जब आप कहते हैं कि "x64 प्लेटफ़ॉर्म पर WOW64 का उपयोग करके एक x86 एमएसआई स्थापित किया जाएगा," तो इसका मतलब यह होगा कि मेरा एप्लिकेशन WOW64'ed होने वाला होगा? और मुझे लगता है कि यह बुरा है। तो अंत में एमएसआई के बीच चयन करने के लिए मेरे पास कुछ प्रकार का बूस्टरपैपर हो सकता है? – Domenic

+0

"क्या इसका मतलब होगा कि मेरा आवेदन WOW64'ed होने वाला होगा?" - हाँ, इसका मतलब यह होगा। आपका एप्लिकेशन 64-बिट मशीन पर 32-बिट प्रक्रिया के रूप में चलाया जाएगा क्योंकि यह "प्रोग्राम फ़ाइलें (x86)" फ़ोल्डर में स्थापित है। एक x86 बूटस्ट्रैपर वास्तव में एक समाधान है जिसका उपयोग आप एप्राइपिएट एमएसआई को चुनिंदा रूप से शुरू करने के लिए कर सकते हैं। –

6

जब मैंने एक साल पहले देखा, तो मैं इस निष्कर्ष पर पहुंचा कि यह संभव नहीं था। यह ध्यान देने योग्य है कि कई माइक्रोसॉफ्ट द्वारा आपूर्ति की गई एमएसआई फाइलें अलग-अलग x86 और x64 स्वादों में आती हैं - और संभवतः, यदि संभव हो तो वे केवल एक फ़ाइल वितरित करेंगे।

1

मुझे फाइलों के दो सेटों को चुनने के लिए दो विशेषताओं का उपयोग करके कुछ सफलता मिली है (पाठ्यक्रम के अलग-अलग घटकों में, उनके व्यक्तिगत फ़ाइल पहचानकर्ताओं के साथ!)।

स्थापना x32 और x64 दोनों पर स्थापित करने के लिए x32 के रूप में चिह्नित किया जाना चाहिए। यह हमेशा x32 निर्देशिकाओं में स्थापित होगा और बड़े पैमाने पर वाह के तहत चल रहे 32 बिट अनुप्रयोग के रूप में माना जाएगा।

संस्करणNT64 प्रॉपर्टी का उपयोग करके आप यह निर्धारित कर सकते हैं कि Windows 64 स्थापना मौजूद है या नहीं, और सशर्त रूप से उन फ़ाइलों को इंस्टॉल करें जिन्हें आप चाहते हैं।

मुझे यकीन नहीं है कि यह कार्यक्षमता VS2008 इंस्टॉल प्रोजेक्ट्स में कितनी कार्यक्षमता उपलब्ध है - मैं इंस्टॉलर को इस तरह स्थापित करने के लिए कुछ अन्य वाणिज्यिक टूल का उपयोग कर रहा हूं। बेशक आप इसे करने के लिए ओर्का का भी उपयोग कर सकते हैं, हालांकि यह वाणिज्यिक उपकरणों के साथ काम करने के लिए गैर-तुच्छ था और ओर्का बहुत कठिन है।

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

  • कोई संबंधित समस्या नहीं^_^