2008-12-15 16 views
5

से फ़ाइल कॉपी करता है। मैं वीएस 2008 का उपयोग कर एसी # विंडोज प्रोजेक्ट के लिए एक इंस्टॉलर बना रहा हूं। मैं एक कस्टम एक्शन लिखने की कोशिश कर रहा हूं जो स्रोत से सेटिंग्स फ़ाइल कॉपी करता है फ़ाइल सर्वर पर संग्रहीत एमएसआई फ़ाइल की निर्देशिका (उदाहरण के लिए \ server \ fileshare \ myappinstaller \ mysetting.xml) कंप्यूटर पर लक्ष्य निर्देशिका पर जिस पर मेरा एप्लिकेशन स्थापित किया गया है (उदाहरण के लिए सी: \ प्रोग्राम फ़ाइलें \ मेरा ऐप)।मुझे एक एमएसआई कस्टम एक्शन की आवश्यकता है जो एमएसआई स्रोत निर्देशिका

सेटिंग्स फ़ाइल को इंस्टॉलर में जोड़ा नहीं जा सकता है क्योंकि इसमें सेटिंग शामिल होगी, जो ऐप इंस्टॉल करने वाले ग्राहक के लिए अद्वितीय होगी।

क्या किसी के पास ऐसी कस्टम कार्रवाई के लिए कोड (अधिमानतः सी # या वीबी.नेट) है? वैकल्पिक रूप से किसी को भी एक कस्टम कार्रवाई के भीतर एमएसआई स्रोत स्थान (उदा। \ सर्वर \ fileshare \ myappinstaller) प्राप्त करने के बारे में पता है।

बहुत धन्यवाद

उत्तर

2

मैं तुम्हें घटकों में से एक के रूप में संस्थापक के लिए एक्सएमएल फ़ाइल जोड़ने के लिए सिफारिश करेंगे स्थापित होने के लिए। यह सबसे आसान तरीका होगा और एक कस्टम कार्रवाई की आवश्यकता नहीं होगी।

वाईएक्स आपके लिए एक विकल्प हो सकता है। यह आपको XmlConfig का उपयोग कर इंस्टॉलेशन के दौरान एक्सएमएल कॉन्फ़िगरेशन फ़ाइलों को कस्टमाइज़ करने की अनुमति देता है।

0

सामान्य रूप से विंडोज इंस्टालर में कस्टम क्रियाएं एमएसआई की किसी भी तालिका में कुछ लगाने के लिए एमएसआई की तालिकाओं से कुछ का उपयोग करती हैं।

इसके अतिरिक्त WindowsInstaller-Team इंस्टॉलरों के लिए किसी भी प्रबंधित एक्सटेंशन को अस्वीकार करता है, इसके कारण नेट पर हर जगह पाए जाते हैं।

लेकिन, मुझे कुछ समय पहले बाहर WindowsInstallers के लिए create managed custom actions के लिए एक विस्तार, WiX साथ प्रयोग करने योग्य, जो अभी भी काम करता है आंकड़ा था, लेकिन वहाँ है कि काम की चोटी पर एक नए समाधान, प्रबंधित कस्टम कार्यों अनुमति देने के लिए WiX के लिए एक वास्तविक विस्तार है ।

1

मैं एक समान काम करता हूं, लेकिन एमएसआई फ़ाइल के अंदर एक डिफ़ॉल्ट कॉन्फ़िगरेशन भेजता हूं और फिर कस्टम कॉन्फ़िगरेशन फ़ाइल जोड़ने के लिए एक एमएसटी का उपयोग करता हूं। यह अधिक विश्वसनीय है क्योंकि विंडोज इंस्टालर के लिए सबकुछ "मूल" है और मुझे बस प्रत्येक ग्राहक को एक छोटा कस्टम एमएसटी भेजने की जरूरत है।

मैं यह कैसे कर रहा हूँ पर

अधिक जानकारी Simplest solution to replace a tiny file inside an MSI?

5

में अधिक पाया जा सकता है मैं करने के लिए

/InstallerPath = "[OriginalDatabase]"

जोड़कर इस समाधान कर लिया है कस्टम एक्शन का कस्टमएक्शनडेटा (सेटअप प्रोजेक्ट के टैब कस्टम एक्शन में) और कस्टम एक्शन में इस कोड के साथ मान पढ़ना:

Public Overrides Sub Commit(ByVal savedState As System.Collections.IDictionary) 
     MyBase.Commit(savedState) 

     Dim directoryOfMSI As String = IO.Path.GetDirectoryName(Context.Parameters("InstallerPath")) 

     'Do your work here 
     '... 

    End Sub 

सीओओ! स्टीफन

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