मेरे पास एक बैच फ़ाइल है जिसे मुझे अपने एनएसआईएस इंस्टॉलर के भीतर चलाने की आवश्यकता है। सभी फ़ाइलों को निकालने के बाद इसे चलाना चाहिए, (मुझे लगता है कि यह स्पष्ट है, अन्यथा बैच फ़ाइल अभी तक मौजूद नहीं होगी)।एनएसआईएस इंस्टॉलर में बैच फ़ाइल निष्पादित
मैंने इसे चलाने के लिए फिनिश पेज के साथ MUI_PAGE_CUSTOMFUNCTION_PRE का उपयोग करने का प्रयास किया, लेकिन जब यह स्क्रिप्ट के उस हिस्से में आता है तो ऐसा लगता है कि यह उस पर सही छोड़ देता है। नीचे मैं इसे कैसे बुलाता हूं।
;;Finish Page
!define MUI_PAGE_CUSTOMFUNCTION_PRE Done
!insertmacro MUI_PAGE_FINISH
Function Done
ExecWait '"$INSTDIR\BatchFile" "$INSTDIR" "$DATA_FOLDER"'
FunctionEnd
आपकी सहायता के लिए अग्रिम धन्यवाद।
अद्यतन
मैं अब का उपयोग कर की कोशिश की है निम्नलिखित:
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "$INSTDIR\batch.bat" "$INSTDIR" "$DATA_FOLDER"'
यह काम नहीं किया है, इसलिए मैं/सी बाहर ले देखने के लिए क्या cmd शीघ्र कह रहे थे (यह पॉप अप हो रहा है, लेकिन तुरंत बंद हो रहा है) और ऐसा लगता है जैसे यह cmd.exe निष्पादित करता है लेकिन यह है, यह शेष निष्पादन को पूरा नहीं करता है।
अद्यतन # 2
कोर ज्ञान है कि मुझे करने के लिए नेतृत्व काम करने के लिए इसे प्राप्त करने यहां पाया जा सकता:
जो भी कारण फाइलों के साथ सहमत नहीं हूँ .bat लिएWindows batch files: .bat vs .cmd?
ExecWait।
अंत में:
ExecWait '"$INSTDIR\BatchFile.cmd" "$INSTDIR" "$DATA_FOLDER"'
ठीक काम किया।
SetOutPath $INSTDIR\${APPLICATION_DIR}
ExpandEnvStrings $0 %COMSPEC%
nsExec::ExecToStack '"C:\path-tobatch-file\commands.bat"'
यहाँ NSIS विकी http://nsis.sourceforge.net/Docs/nsExec/nsExec.txt
मैं चलाने में सक्षम था .bat fi ले, जैसा आपने ऊपर cmd फ़ाइलों के लिए पोस्ट किया है। आप ExecWait की बजाय nsExec :: Exec का उपयोग कर कमांड विंडो को प्रदर्शित होने से भी दबा सकते हैं। – Ben