2011-01-06 11 views
10

के साथ एक एमएसआई के कई उदाहरण स्थापित करें हमारे उत्पाद में एक एमएसआई इंस्टॉलर (वाईएक्स में लिखा गया है) जो मूल रूप से कुछ फ़ाइलों को एक फ़ोल्डर c: \ ourproduct में कॉपी करता है और एक विंडोज़ सेवा "ourwindowsservice" स्थापित करता है।डायनामिक इंस्टेंस नाम

हम सेवा के कई उदाहरणों के लिए समर्थन जोड़ना चाहते हैं, और उन्हें एक-दूसरे से स्वतंत्र रूप से स्थापित/अनइंस्टॉल करना संभव होना चाहिए। इसी तरह उदा। एसक्यूएल सर्वर के लिए, प्रत्येक इंस्टेंस में एक ऐसा नाम होना चाहिए जिसे एमएसआई को कमांड लाइन पैरामीटर के रूप में पास किया जा सके।

उदाहरण: उदाहरण 'ए' => कॉपी फ़ाइलों के लिए: ": \ ourproductB ग", सेवा के रूप में "इंस्टॉल करें" ग \ ourproductA ", सेवा के रूप में" ourwindowsserviceA " उदाहरण 'बी' स्थापित => फाइलों को कॉपी ourwindowsserviceB " ...

कोई विचार?

Instance transformation उदाहरणों के पूर्व परिभाषित और पूर्व-नामित सेट की आवश्यकता होती है।

धन्यवाद

उत्तर

9

ServiceInstall तालिका का नाम स्तंभ प्रारूपित प्रकार है। इसका मतलब है कि आप नाम ड्राइव करने के लिए रनटाइम पर गुणों का उपयोग कर सकते हैं।

कुछ साल पहले मैंने एकाधिक इंस्टेंस इंस्टॉलर्स पर एक ब्लॉग आलेख लिखा था। टिप्पणियों में किसी ने गतिशील संख्या के बारे में पूछा और मैं इस बारे में बात करता हूं कि क्या करने की आवश्यकता होगी। असल में आपको एक bootstrapper.exe लिखना होगा जिसमें यूआई था और अद्वितीय गुणों के साथ ट्रांसफॉर्म के निर्माण को ड्राइव कर सकता था। अपने एमएसआई इंटरऑप के लिए सी # और वाईएक्स/डीटीएफ का उपयोग करना वास्तव में काफी संभव है। मैंने वास्तव में इसे वास्तव में करने की आवश्यकता महसूस नहीं की। मैं उत्पाद, उत्पाद -1 के साथ पूरी तरह से खुश हूं ... उत्पाद -15 और आप कर चुके हैं। शॉर्टकट्स को कस्टम एक्शन द्वारा किया जाना चाहिए क्योंकि वे स्वरूपित प्रकार का समर्थन नहीं करते हैं लेकिन INSTALLDIR को मॉर्फ किया जा सकता है और सर्विस नाम स्वरूपित समर्थन करते हैं।

+0

धन्यवाद, क्रिस्टोफर! क्या आपका ब्लॉग आलेख अभी भी किसी भी मौके से ऑनलाइन है? – Max

+0

http://blog.deploymentengineering.com/2006/10/multiple-instance-msis-and.html और http://blog.deploymentengineering.com/2008/03/installshield-2009-beta-part-i.html क्रिस के जवाब में –

+0

+1। बीटीडब्ल्यू, मैं उन लोगों में से एक था जिन्होंने उल्लिखित ब्लॉग पोस्ट की टिप्पणियों में कई उदाहरणों के बारे में प्रश्न पूछे। :) फिर से धन्यवाद, क्रिस, जिसने मुझे बहुत मदद की! बाद में मैंने यहां इस क्षेत्र में अपना अनुभव साझा किया: http://ysdevlog.blogspot.com/2008/12/multiple-instance-installations-and.html। यदि आप पैच के माध्यम से उन्नयन के बारे में भी सोचते हैं, तो आपको अंत तक इसे पढ़ने में दिलचस्प लगेगा और आखिरी टिप्पणी में साझा किए गए लिंक पर विशेष ध्यान देना होगा। सौभाग्य! –

2

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

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

हालांकि, क्रिस्टोफर का उल्लेख करते हुए, आप इंस्टॉलर गुणों का उपयोग करके एक गतिशील उदाहरण अनुकरण करने का प्रयास कर सकते हैं। इन गुणों को स्थापना UI या कस्टम बूटस्ट्रैपर द्वारा सेट किया जा सकता है।

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