У меня есть пакетный файл, который я должен выполнить в рамках своего установщика 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
Заранее спасибо за Вашу справку.
ОБНОВЛЕНИЕ
Я теперь попытался использовать следующее:
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "$INSTDIR\batch.bat" "$INSTDIR" "$DATA_FOLDER"'
Это не работало, таким образом, я вынул/C для наблюдения то, что подсказка cmd говорила (она открывается, но закрывается сразу), и кажется, как будто она выполняет cmd.exe, но вот именно, она не завершает остальную часть выполнения.
ОБНОВЛЕНИЕ № 2
Базовое знание, которое привело ко мне заставляющий это работать, может быть найдено здесь:
Пакетные файлы Windows: .bat по сравнению с .cmd?
По любой причине .bat файлы не соглашаются с ExecWait.
В конце:
ExecWait '"$INSTDIR\BatchFile.cmd" "$INSTDIR" "$DATA_FOLDER"'
Работавший просто великолепно.
Exec[Wait] нуждается в правильном цитировании:
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "c:\path\to\batch.cmd" "quoted param" normalparam "c:\last param"'
Я сделал это с помощью расширения exec очень успешно
Вот синтаксис:
SetOutPath $INSTDIR\${APPLICATION_DIR}
ExpandEnvStrings $0 %COMSPEC%
nsExec::ExecToStack '"C:\path-tobatch-file\commands.bat"'
Вот ссылка на NSIS Wiki http://nsis.sourceforge.net/Docs/nsExec/nsExec.txt