Ответ 1
Exec [Wait] нуждается в правильном цитировании:
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "c:\path\to\batch.cmd" "quoted param" normalparam "c:\last param"'
У меня есть пакетный файл, который мне нужно запустить в моем установщике NSIS. Он должен запускаться после того, как все файлы были извлечены (я полагаю, это очевидно, иначе пакетный файл еще не существует).
Я попытался использовать MUI_PAGE_CUSTOMFUNCTION_PRE с завершающей страницей, чтобы запустить его, но когда он попадает в эту часть script, кажется, что он проскакивает прямо над ним. Вот как я его вызываю.
;;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, но это не так, t выполните оставшуюся часть выполнения.
ОБНОВЛЕНИЕ # 2
Основные знания, которые привели меня к работе, можно найти здесь:
Пакетные файлы Windows:.bat vs .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