Wix

2012-07-05 17 views
8

में कॉपी की गई फ़ाइलों के बाद कस्टम कार्रवाई को कॉल करने के लिए कैसे करें गंतव्य फ़ाइलों में फ़ाइलों की प्रतिलिपि बनाने के बाद मैं कस्टम कार्रवाई करना चाहता हूं।Wix

कस्टम कार्रवाई में मैं कॉपी की गई स्क्रिप्ट फ़ाइल चलाता हूं इसलिए मुझे त्रुटि फ़ाइल नहीं मिली।

<CustomAction Id="RunDBScript" 
       BinaryKey="CA" 
       DllEntry="RunDBScript" 
       Execute=" immediate" 
       Return="check" /> 


<Custom Action="RunDBScript" After="InstallFiles"> 
    <![CDATA[NOT Installed]]> 
    </Custom> 

यह कस्टम कार्रवाई एक त्रुटि फ़ाइल/निर्देशिका नहीं मिली है। इसलिए फ़ाइल प्रतिलिपि से पहले यह क्रिया कॉल।

तो फ़ाइल प्रतिलिपि के बाद कस्टम कार्रवाई कैसे कॉल करें?

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

+0

सुनिश्चित अपने सीए आस्थगित: 'निष्पादित =" आस्थगित "' –

+1

अगर मैं निष्पादित का उपयोग = "आस्थगित" तो मुझे त्रुटि दे: –

+4

आप कैसे किया था "एक गैर तत्काल कस्टम क्रिया से सत्र विवरण तक नहीं पहुंच पा" अपनी समस्या हल करें? – guiomie

उत्तर

4

जब आप स्थगित कस्टम क्रियाओं का उपयोग करते हैं, तो आपको सत्र के माध्यम से मूल्यों का उपयोग करना होगा। कस्टमएक्शनडेटा ["propertyname"]।

सत्र शब्दकोश मान केवल तत्काल कस्टम क्रियाओं द्वारा पढ़ा जा सकता है, जहां निष्पादन स्क्रिप्ट लिखी जा रही है।

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

bellow उदाहरण का पालन करें:

<CustomAction Id="CustomActionID_Data" Property="CustomActionID" Value="INSTALLDIR=[INSTALLDIR];OTHERPROPERTY=[OTHERPRPJECTPROPERTY]"></CustomAction> 
<CustomAction Id="CustomActionID" BinaryKey="FILEBINARYID" DllEntry="METHODNAMEATCUSTOMACTION" Execute="deferred"></CustomAction> 

इस उदाहरण में, आप InstallExecutionSequence पर कस्टम क्रिया "_Data" और कॉल के बाद असली है, तो पहले "_Data" होगा से वांछित गुण कॉल करने की आवश्यकता । फिर आप सत्र का उपयोग कर अपने कोड पर उन गुणों तक पहुंच सकते हैं। कस्टमएक्शनडाटा [""]।

बस पूरक, बोले InstallExecuteSequence पर कस्टम क्रियाओं को कॉल करने का एक उदाहरण है।

<Custom Action="CustomActionID_Data" After="InstallFiles">NOT (REMOVE="ALL")</Custom> 
<Custom Action="CustomActionID" After="CustomActionID_Data">NOT (REMOVE="ALL")</Custom>