2010-03-05 16 views
5

में चुप इंस्टॉल स्थापित करें आप कैसे पता लगाते हैं कि इंस्टॉल मूक मोड में चल रहा है?.NET कस्टम एक्शन

मेरे पास एक कस्टम एप्लिकेशन है जिसे मैंने एक .msi सेटअप प्रोजेक्ट जोड़ा है। मैं/qb स्विच के साथ .msi फ़ाइल चलाता हूं, और मेरे कस्टम इंस्टॉलर सी # कोड में मैं इसे पहचानने में सक्षम होना चाहता हूं।

संपादित करें: nobugs UILevel संपत्ति का परीक्षण करने के लिए कहते हैं। मैं सिस्टम से प्राप्त कक्षा से UILevel संपत्ति का उपयोग कैसे करूं। कॉन्फ़िगरेशन.इनस्टॉल.स्टॉलर क्लास?

+0

आप क्या इंस्टॉल कर रहे हैं? सी#? कस्टम ऐप? –

+0

मैंने यह बताने के लिए सवाल संपादित किया कि यह एक कस्टम एप्लिकेशन है जिसे मैंने .msi इंस्टॉलर बनाने के लिए एक सेटअप प्रोजेक्ट जोड़ा है। –

उत्तर

10

nobugz से संकेत लेते हुए मैं निम्नलिखित किया:

  1. .msi सेटअप परियोजना के कस्टम क्रिया को देखने पर, मैं जोड़ा मेरी CustomActionData (के लिए निम्न अपने कस्टम के माध्यम से पारित करने के लिए UILevel संस्थापक):

    /UILevel = "[UILevel]"

  2. आधार वर्ग इंस्टालर से प्राप्त कोड के लिए मेरे सी # कोड के भीतर, मैं कोड मूल्य प्राप्त करने कहा:

    स्ट्रिंग uiLevelString = संदर्भ। पैरामीटर ["UILevel"];

  3. स्ट्रिंग को एक int मान के लिए पार्स करना आसान था। यदि मान < = 3 है, तो यह एक मूक इंस्टॉल है।

+1

क्या आप चरण 2 पर विस्तार से जानकारी दे सकते हैं - जहां आप उस कोड को लिखते हैं, जिस पर व्युत्पन्न वर्ग की घटना है? अग्रिम में धन्यवाद –

+1

@Andrei Cristof चरण 2 में मैंने "इंस्टॉल" विधि का ओवरराइड किया था। –

0

सबसे पहले मैं इंगित करता हूं कि InstallUtil एक बहुत खराब पैटर्न है। वे प्रक्रिया से बाहर निकलते हैं, सीएलआर संस्करण के साथ प्रक्रिया को टैटू करते हैं और जब वे असफल होते हैं तो वे एक चुप इंस्टॉल के दौरान भी 1001 त्रुटि मोडल संवाद उठाते हैं।

इसके बजाय आपको वाईएक्स के डीटीएफ पैटर्न का उपयोग करना चाहिए।

MsiGetMode (सत्र.मोड) स्थगित निष्पादन के दौरान सीमित है, इसलिए आपको UILevel को क्रमबद्ध और deserialize करना होगा।

http://www.msifaq.com/a/1044.htm

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