2012-07-29 30 views
38

मुझे पता कर सकते हैं प्रत्येक Exec, ExecWait, ExecShell, nsExec::Exec, nsExec::ExecToLog,nsExec::ExecToStack, ExecDos और ExecCmd के बीच मतभेद रहे हैं , किस समय उपयोग करने के लिए?Exec बनाम ExecWait बनाम ExecShell बनाम nsExec :: Exec बनाम nsExec :: ExecToLog बनाम nsExec :: ExecToStack बनाम ExecDos बनाम ExeCmd

मैंने विभिन्न निष्पादन कॉल पोस्ट किए हैं जिन्हें मैं जानता हूं। इतना है कि यह भविष्य आगंतुकों में मदद करता है मैं, एक व्यापक सूची बनाने के लिए कोशिश कर रहा हूँ ..

  1. Exec: स्पष्ट रूप से, कहा जाता है स्ट्रिंग निष्पादित यह कुछ आवेदन, कंसोल या फ़ाइल हो।

  2. ExecWait: Exec जैसे निष्पादन लेकिन प्रक्रिया समाप्त होने तक प्रतीक्षा करता है।

  3. ExecShell: इसके लिए क्या है?

  4. nsExec::Exec: बस Exec या ExecWait लेकिन केवल कमांड प्रॉम्प्ट के लिए की तरह है और वह भी कंसोल विंडो खोले बिना। मुझे यकीन नहीं है कि यह बाहर निकलने की प्रक्रिया के लिए इंतजार कर रहा है। nsExec::Exec बच्चे की प्रक्रिया से बाहर निकलने के लिए प्रतीक्षा करें?

  5. nsExec::ExecToLog: The documentation says ExecToLog सादा nsExec के समान है, लेकिन यह खिड़की लॉग इन करने के आउटपुट। इसका क्या अर्थ है, लॉग विंडो क्या है?

  6. nsExec::ExecToStack: प्रलेखन कहते हैं ExecToStack सादा nsExec के समान है, लेकिन यह उत्पादन ढेर धक्का। मै समझ गया।

  7. ExecDos: वही nsExec::ExecToStack रूप में, लेकिन यह अतिरिक्त

    एक (यह है नहीं?)। स्ट्रिंग पैरामीटर लेता है जो चलने वाले एप्लिकेशन के लिए stdin के रूप में कार्य करता है।

    बी। सिंक/एसिंक मोड दोनों में काम करता है।

    सी। यह अनुभाग से बाहर काम करता है - .onInit चेक आउट के लिए।

  8. ExecCmd: वही ExecDos के रूप में लेकिन यह इन

    ExpandEnvStrings $3 %COMSPEC% 
    ExecDos::exec /C 
    

    भागों की आवश्यकता नहीं है। क्या मैं सही हूँ?

+1

आप [टाइमआउट :: ExecTimeout] (http://nsis.sourceforge.net/ExecTimeout_plug-in) भी शामिल कर सकते हैं, जिनके लिए बाल प्रक्रिया को मारने की आवश्यकता है, यदि इसे पूरा करने में बहुत लंबा समय लगता है। –

+0

@ फ्रांसिस्कोआर प्रश्न को संपादित करने के लिए स्वतंत्र महसूस करें और इसे जोड़ें (इसके उद्देश्य के साथ)। मैंने आपके द्वारा वर्णित किसी के बारे में इतना जानकारी नहीं दी है। – nawfal

+0

वास्तव में, प्रत्येक आदेश को क्या करना चाहिए इसके लिए स्पष्टीकरण एक प्रश्न में हैं, _not_ स्वयं प्रश्न में। "क्या मैं सही हूँ?" = खराब स्टैक ओवरफ्लो प्रश्न। मैं उन बिट्स को एक उत्तर में ले जाने का लुत्फ उठा रहा हूं, लेकिन पहले से ही एक जवाब है कि आगे बढ़ना अमान्य होगा। –

उत्तर

36

1) 2) 3) आंतरिक रूप से

Exec और ExecWait उपयोग CreateProcess और केवल कार्यक्रमों और बैच फ़ाइलों शुरू कर सकते हैं।

ExecShellShellExecute का उपयोग करता है जिसका अर्थ है कि यह किसी भी पंजीकृत फ़ाइल प्रकार (.txt .chm आदि) और यूआरएल भी लॉन्च कर सकता है।यदि आपके द्वारा शुरू किए जा रहे प्रोग्राम को यूएसी के साथ बढ़ाना आवश्यक है तो इसका भी उपयोग किया जाना चाहिए।

4)

nsExec पुनर्निर्देश stdout तो एक कंसोल विंडो जब बच्चे प्रक्रिया निष्पादित करता दिखाई नहीं देता है। और हाँ, यह इंतजार कर रहा है।

5)

instfiles पृष्ठ पर लॉग खिड़की।

7)

हाँ, दोनों ExecDos और ExecCmd nsExec के और अधिक उन्नत संस्करण हैं।

8)

सही

2

ExecWait प्रतीक्षा करता है और इस प्रकार कर सकते हैं वापसी सामान! docs

ExecShellआउटपुट विंडो को छिपाने में भी सक्षम है। docs

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