2012-10-22 21 views
9

आपको पृष्ठभूमि देने के लिए - मेरे पास 4 एमएसआई है जो हमारे विक्रेता से आता है और इसे हमारे कंपनी सर्वर पर जाना है (हम लगभग 3500 सर्वर देख रहे हैं)। अभी तक, मेरे समकक्ष vbs, ps1 स्क्रिप्ट का उपयोग करके इसका प्रबंधन कर रहे हैं। लेकिन स्क्रिप्ट के साथ समस्या यह है कि हर बार एक अद्यतन आता है, हमें नए पैकेज और हार्डकोडिंग के एक टन को चलाने से पहले मौजूदा पैकेज को अनइंस्टॉल करने की चिंता करनी होगी।WIX बंडल में कस्टमएक्शन का उपयोग कैसे करें?

मैं सभी 4 एमएसआई को एक साथ पैकेज करने के लिए एक WIX स्क्रिप्ट स्थापित करके पूरी प्रक्रिया (बहुत कम हार्डकोडिंग के साथ) स्वचालित करना चाहता हूं। मैंने WIX बंडल के बारे में पढ़ा और एक एमएसआई बनाने के लिए इसका इस्तेमाल किया। लेकिन अब 4 एमएसआई को पास करने के लिए बहुत सारे चर हैं, इसलिए मैंने इन चरों को पर्यावरण/मशीन के आधार पर सेट करने के लिए कस्टम क्रियाओं का उपयोग करने का विचार किया जहां एमएसआई चल रहा है। लेकिन मैं काम करने के लिए कस्टम कार्रवाई नहीं कर सकता? क्या मैं कुछ भूल रहा हूँ?

थोड़ी सी गुगलिंग और मैंने कुछ देखा जैसे बंडल में कोई कस्टम क्रिया नहीं है? क्या कोई पुष्टि कर सकता है?

यदि कोई सीए नहीं है तो मेरे विकल्प क्या हैं? मैं 4 एमएसआई को पारित करने के लिए चर का उपयोग कैसे कर सकता हूं? उनमें से ज्यादातर को मशीन चलाने के आधार पर सेट करने की आवश्यकता है (जैसे पथ स्थापित करें, उपयोगकर्ता आईडी, ऐप पूल आईडी आदि)।

उत्तर

4

मैं इसे देखना रूप में, आप तीन विकल्प हैं:

  1. क्या जानकारी की आवश्यकता पर निर्भर करता है, आप इस तरह रजिस्ट्री कुंजियों को पढ़ने और प्रदर्शन फ़ाइल खोज करता है, जो आप कर सकते हैं के रूप में सरल कार्य करने के लिए उपयोग कर सकते हैं WixUtilExtension फिर परिणामों को अपने इंस्टॉलेशन पैकेज में गुणों के रूप में पास करें।

  2. व्यक्तिगत स्थापना संकुल में कस्टम क्रियाएं लागू करें (बंडल में नहीं)।

  3. सेट करने के लिए आवश्यक सभी गुणों को निर्धारित करने के लिए अपना स्वयं का कस्टम बूटस्ट्रैपर एप्लिकेशन लिखें, और फिर उन्हें अपने इंस्टॉलेशन पैकेज में पास करें। इस तुलना में # 1 और # 2 और अधिक जटिल है, लेकिन आप अगर अपने रुचि निम्न लिंक मिलना चाहिए शुरू कर दिया: introducing managed bootstrapper applications और write a wpf wix installer

+0

समझ में आता है! मैंने सीए की बंडल में दौड़ने के लिए हर संभव प्रयास किया और इसे अभी नहीं बुलाया गया। जो मैं समझता हूं, वैसे भी WIX बंडल एक एमएसआई फ़ाइल उत्पन्न करता है, यह वास्तव में एक एमएसआई नहीं है (आप इसे mieiexec के साथ नहीं चला सकते हैं या इसे ओआरसीए के साथ खोल सकते हैं)। यह सिर्फ एक एक्सई या प्रोग्राम है जो सभी एमएसआई को एक साथ जोड़ता है और इसमें एमएसआई के किसी भी गुण नहीं हैं। पी।एस: मुझे लगता है कि इसे एमएसआई के रूप में नामित एमएस को भ्रमित करने के लिए :) – Isaiah4110

+0

@ user1766402, मुझे यह भी एहसास नहीं हुआ कि जब तक मैं आपका प्रश्न नहीं पढ़ता तब तक बंडल को एमएसआई के रूप में आउटपुट करना संभव था। आप विजुअल स्टूडियो में प्रोजेक्ट पर राइट क्लिक कर सकते हैं और प्रॉपर्टी का चयन कर सकते हैं, और आउटपुट को .exe में बदल सकते हैं। यह वही होना चाहिए जो डिफ़ॉल्ट रूप से बंडल/बूटस्ट्रैपर परियोजनाओं के लिए है। – BryanJ

+3

एक वाईएक्स बंडल एक एमएसआई नहीं है, यह एक निष्पादन योग्य है। .exe को .exi का नाम बदलना नहीं है। :) –

9

वहाँ एक चौथा विकल्प, एक उपयोगी हल्के हैक, विजय द्वारा की पहचान है कोटेचा (http://vijayskotecha.blogspot.com/2013/07/wix-bootstrapper-custom-action.html देखें), ...

अनिवार्य रूप से, <ExePackage> को पास-थ्रू .bat या .cmd बैच फ़ाइल के आस-पास बनाएं। बैच/कमांड फ़ाइल में सिंगल लाइन '%*' है जो पहले कमांड कमांड के रूप में सभी कमांड लाइन तर्कों को दोबारा निष्पादित करता है।

इस प्रकार

:

<ExePackage ... SourceFile="SourcePath\WixCustomAction.cmd" 
    InstallCommand="my_custom_action.exe my_custom_parameters" /> 
<ExePackage ... SourceFile="SourcePath\WixCustomAction.cmd" 
    InstallCommand="my_next_action.exe my_next_parameters" /> 

कहाँ WixCustomAction.cmd केवल युक्त '%*' एक फाइल है।

ये <ExePackages> को <Bundle><Chain> में क्रमशः InstallCommand एस के उपयोग की आवश्यकता के अनुसार <Bundle><Chain> में रखा जा सकता है।