У меня есть пакетный файл, который мне нужно запустить в моем установщике NSIS. Он должен запускаться после того, как все файлы были извлечены (я полагаю, это очевидно, иначе пакетный файл еще не существует).Выполнение пакетного файла в установщике NSIS
Я попытался использовать 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
Заранее за вашу помощь.
UPDATE
Теперь я попытался с помощью следующих действий:
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "$INSTDIR\batch.bat" "$INSTDIR" "$DATA_FOLDER"'
Это не сработало, так что я вынул/C, чтобы увидеть, что CMD подсказка говорит (это появляется, но закрывается немедленно), и кажется, что он выполняет cmd.exe, но это все, но он не выполняет оставшуюся часть выполнения.
UPDATE # 2
Ядро знания, которые привели ко мне заставить его работать, можно найти здесь:
Windows batch files: .bat vs .cmd?
По какой причине .bat файлы не согласны с ExecWait.
В конце концов:
ExecWait '"$INSTDIR\BatchFile.cmd" "$INSTDIR" "$DATA_FOLDER"'
работал просто отлично.
Мне удалось запустить .bat fi le, так же, как вы указали выше для cmd-файлов. Вы также можете отключить отображение командного окна с помощью nsExec :: Exec, а не ExecWait. – Ben