2011-09-09 4 views
10

का उपयोग कर क्लाइंट मशीन पर शर्त स्थापित करने के लिए मैं MSI है और VSTO रन-टाइम लक्ष्य मशीन पर स्थापित किया गया है या जांच करने के लिए चाहता है, मैं अपने MSI में VS2008 के माध्यम से लांच हालत का इस्तेमाल किया है, लेकिन यह केवल विक्रेता की वेबसाइट से उपयोगकर्ता अनुप्रेषित। मैं बस शर्त पर स्थापित करना चाहता हूं अगर यह मशीन पर स्थापित नहीं है और चाहते हैं कि एमएसआई के दौरान पूर्व शर्त स्थापित हो। यह संक्षेप किया जा सकता है के रूप में:बेस्ट दृष्टिकोण MSI

जब MSI चल रहा है:

  1. यह जांच करना चाहिए शर्त स्थापित किया गया है कि क्या अगर हाँ तो स्थापना
  2. फिर से शुरू तो शर्त पहले स्थापित नहीं और उसके बाद फिर से शुरू एमएसआई स्थापना

मैंने कस्टम पैकेज में एकल पैकेज निष्पादन योग्य, वीबी स्क्रिप्ट जैसे कई समाधान खोजे और खोजे, लेकिन आवश्यकता है कि इंस्टॉलर के साथ कुछ भी शिप न करें और न ही exe स्वीकार्य है :(

मैं ओर्का स्थापित आप पहले से ही जानते हैं, setup.exe फ़ाइल है, लेकिन न ओर्का

का उपयोग कर

आपका मदद की सराहना की है .. अग्रिम धन्यवाद MSI को अनुकूलित करने के लिए बहुत ज्ञान है ...

उत्तर

2

के बाद से एक EXE bootstrapper स्वीकार्य नहीं है, वहाँ केवल एक ही समाधान है:

  • दुकान अपने एमएसआई के Binary तालिका में शर्त संस्थापक
  • कुछ custom actions जो उन्हें इस तालिका से निकाल बनाने और उन्हें
  • का शुभारंभ
  • उन्हें InstallUISequence में निर्धारित करते हैं, उदाहरण के लिए आवश्यक शर्तें स्थापित या नहीं कर रहे हैं, तो
  • ठीक पहले प्रगति संवाद
  • उपयोग searches पता लगाने के लिए
  • खोज के साथ परिणाम

मूल रूप से अपने कस्टम कार्यों हालत, आप स्थापना यूआई के दौरान उन्हें लांच करने की जरूरत है। यह इंस्टॉल नहीं हो सकता है यदि कस्टम क्रियाएँ InstallExecuteSequence के दौरान चलती हैं।

यह विजुअल स्टूडियो द्वारा समर्थित नहीं है, लेकिन कुछ वाणिज्यिक सेटअप संलेखन उपकरण के लिए इसका प्रत्यक्ष समर्थन है। यदि आप एक मुफ्त समाधान चाहते हैं तो आप WiX का उपयोग कर सकते हैं, लेकिन आपको कस्टम क्रियाएं स्वयं लिखनी होंगी।

1

कि विजुअल स्टूडियो आपके लिए उत्पन्न करता है कई आवश्यकताएं स्थापित कर सकता है। हालांकि, आपका प्रश्न बताता है कि आपको केवल एक एमएसआई फ़ाइल भेजनी होगी, इसलिए setup.exe मदद करने वाला नहीं है।

इसके बजाय, आप शर्त (रों) स्थापित करने के लिए अपने स्वयं के कार्यक्रम बना सकते हैं। इंस्टॉल में प्रोग्राम शामिल करें, ताकि यह आपके लिए एमएसआई में बंडल हो जाए, फिर इंस्टॉल समय पर इसे चलाने के लिए एक कस्टम एक्शन सेट अप करें। आप इंस्टॉलर में एक झंडा भी सेट कर सकते हैं ताकि प्रोग्राम वास्तव में लक्ष्य मशीन पर स्थापित नहीं किया जाएगा - इसके बजाय इसे केवल एमएसआई में बंडल किया जाएगा और इंस्टॉलर को उपलब्ध कराया जाएगा।

आप पहले से ही नेट आधारित कोड स्थापित कर रहे हैं, तो समाधान भी आसान है: अपने मौजूदा कोड के लिए एक परियोजना संस्थापक वर्ग जोड़ कर संस्थापक वर्ग चलाने के लिए कस्टम कार्रवाई निर्धारित किया है। नोट, हालांकि, यह दृष्टिकोण काम नहीं करेगा यदि आप जिस शर्त को स्थापित करना चाहते हैं वह .NET रनटाइम है।

3

आप एक से अधिक .msi संकुल एक साथ नहीं चल सकता, इसलिए यदि एक पूर्व अनुरोध .msi आधारित है, यह काम नहीं करेगा। (याद रखें कि कई .msi- आधारित संकुल .exes में लपेटे गए हैं।)

3

WIX विंडोज इंस्टालर बनाने के लिए सबसे शक्तिशाली (और निःशुल्क) टूल में से एक है। एक एंड-टू-एंड आलेख है जिसे मैंने कुछ समय पहले Creating a localized Windows Installer & bootstrapper पर लिखा था, जो मदद कर सकता है।

आप WIX फ़ाइल में स्थिति को परिभाषित करने, उदाहरण के लिए द्वारा आवश्यक शर्तें लागू कर सकते हैं।

<Condition Message="[ProductName] requires the Microsoft .NET Framework 4 Client Profile"> 
    Installed Or NETFRAMEWORK40CLIENT 
</Condition> 

हालांकि पूर्व शर्त स्थापित करने के लिए, आपको बूस्टरैपर (EXE) की आवश्यकता होगी।

उपर्युक्त आलेख दिखाता है कि प्रबंधित EXEs बनाने के लिए dotNetInstaller का उपयोग कैसे करें, जो अंत में एम्बेडेड एमएसआई निष्पादित करने से पहले इन पूर्वापेक्षाएँ जांचें और इंस्टॉल करें। आप निश्चित रूप से एक साथ एमएसआई का एक साथ श्रृंखला भी ले सकते हैं, यह वास्तव में लचीला है।

मेरा मानना ​​है कि WIX भी एक उपकरण बुलाया जला जो 3.5 में जारी किया जाना चाहिए था है, मैं इसे इस्तेमाल नहीं किया है, लेकिन यह भी बूटस्ट्रैप कार्यक्षमता प्रदान करता है।

ओर्का वास्तव में एमएसआई को शिकायत करने के लिए उपयोग नहीं किया जाता है, यह डिबगिंग और अंदर के आसपास खोदने के लिए उपयोगी है।

+0

रीप्ले के लिए थैंक्स। क्या आप एक लिंक पोस्ट कर सकते हैं या विस्तृत कर सकते हैं कि wix (चरण-दर-चरण) मेथोड का उपयोग करके पूर्व शर्त कैसे जोड़ें, क्योंकि मैं पूरी तरह से WIX के साथ नया हूं :( – Smack

+0

मैंने एक त्वरित उदाहरण के साथ अद्यतन किया है। सबसे अच्छी बात यह है कि लेख जिसे मैंने संदर्भित उदाहरण के रूप में संदर्भित किया है। – TheCodeKing

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

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