Выполнение Пакетного файла в установщике 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

Заранее спасибо за Вашу справку.

ОБНОВЛЕНИЕ

Я теперь попытался использовать следующее:

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"'

Работавший просто великолепно.

15
задан Community 23 May 2017 в 12:16
поделиться

2 ответа

Exec[Wait] нуждается в правильном цитировании:

ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "c:\path\to\batch.cmd" "quoted param" normalparam "c:\last param"'
7
ответ дан 1 December 2019 в 04:46
поделиться

Я сделал это с помощью расширения 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

5
ответ дан 1 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: