2011-09-12 11 views
7

मैं अपने उत्पादों में से किसी एक की मौजूदा स्थापना को अद्यतन करने के लिए मौजूदा WiX इंस्टॉलर को संशोधित कर रहा हूं। ऐसे कई मान हैं जिनके डिफ़ॉल्ट गुणों में निर्दिष्ट हैं। ये गुण उपयोगकर्ता को संपादन के लिए प्रदर्शित किए जाते हैं और फिर मौजूदा इंस्टॉलर द्वारा कस्टम कॉन्फ़िगरेशन फ़ाइल में लिखे जाते हैं।किसी संपत्ति के मान को सेट करने के लिए एक WiX कस्टम कार्रवाई का उपयोग

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

मैंने जो पढ़ा है, उससे मुझे लगता है कि मुझे गुणों को सेट करने के लिए type 51 custom action का उपयोग करने की आवश्यकता है। लेकिन मैं इस कस्टम कार्रवाई को कैसे कार्यान्वित करूं?

मुझे लगता है कि मुझे इसे कस्टम एक्शन टेबल में रखने के लिए कस्टम एक्शन को परिभाषित करना होगा, और फिर मुझे इसे कॉल करने के लिए कहीं और टैग चिपकाना होगा। और फिर मुझे इसे परिभाषित करने की आवश्यकता है।

मैं यह कैसे कर सकता हूं? कुछ उदाहरण कोड क्या होगा?

उत्तर

4

कस्टम कार्यों में कुछ और शोध करने के बाद, मेरा मानना ​​है कि मुझे यह सब पता चला है। मैंने < बाइनरी> .wxs फ़ाइल को टैग करने के लिए टैग किया है यह पता लगाने के लिए कि कस्टम कार्रवाई कहां रहती है। मैंने फिर कस्टमएक्शन में बाइनरी टैग की आईडी का संदर्भ दिया। अंत में, मैंने InstallExecuteSequence अनुभाग में एक कस्टम टैग जोड़ा जो आईडी द्वारा कस्टमएक्शन टैग का संदर्भ देता है।

उपरोक्त वर्णित अंतिम कस्टम टैग को इंस्टॉलयूसिक्सेन्स अनुभाग में जाना आवश्यक है, न कि InstallExecuteSequence अनुभाग, क्योंकि संवाद को प्रदर्शित होने से पहले कस्टम कार्रवाई को कॉल करने की आवश्यकता है।

कस्टम एक्शन के कार्यान्वयन के लिए, मैंने समाधान के लिए एक नई सी # कस्टम एक्शन लाइब्रेरी प्रोजेक्ट जोड़ा। वहां, मैंने [कस्टमएक्शन] विशेषता के साथ सजाए गए एक विधि को लागू किया। यह विधि विधि ऑब्जेक्ट में संग्रहीत गुणों के मानों का उपयोग विधि के पैरामीटर के रूप में पारित करती है और वर्तमान संस्करण की निष्पादन योग्य फ़ाइल का पथ निर्धारित करती है। यह तब प्रोग्राम की कॉन्फ़िगरेशन फ़ाइल में मानों का पता लगाने के लिए आवश्यक कार्य करता है जिसे संस्करणों में संरक्षित करने की आवश्यकता होती है और उन्हें अपग्रेड स्क्रिप्ट के लिए अन्य गुणों में लिखती है।

2

WiX tutorial के निम्न अनुभाग पढ़ें:

  1. Extra Actions: कैसे एमएसआई के लिए एक कस्टम क्रिया को जोड़ने के लिए के एक सिंहावलोकन देता है;
  2. What's Not in the Book: डीएलएल में कस्टम एक्शन को कार्यान्वित करने का एक उदाहरण प्रदान करता है।
+0

है कि मैं exectly क्या किया और मैं समाधान मैं पोस्ट के साथ आया था। –

1

उदाहरण:

[CustomAction] 
    public static ActionResult SetProperty(Session session) 
    { 
     try 
     { 
      session.Log("Begin SetProperty action"); 

      session["PROPERTY_NAME"] = "value" 


     } 
     catch (Exception exception) 
     { 
      session.Log("ERROR in custom action SetProperty {0}", exception.ToString()); 

      return ActionResult.Failure; 
     } 

     return ActionResult.Success; 
    } 
संबंधित मुद्दे