Ich habe eine Batch-Datei, die ich in meinem NSIS-Installer ausführen muss. Es muss laufen, nachdem alle Dateien extrahiert wurden (ich nehme an, das ist offensichtlich, sonst wäre die Batch-Datei noch nicht vorhanden).Batch-Datei im NSIS-Installationsprogramm ausführen
Ich habe versucht, MUI_PAGE_CUSTOMFUNCTION_PRE mit der Zielseite zu verwenden, um es auszuführen, aber wenn es zu diesem Teil des Skripts kommt, scheint es, dass es überspringt. Unten ist, wie ich es anrufe.
;;Finish Page
!define MUI_PAGE_CUSTOMFUNCTION_PRE Done
!insertmacro MUI_PAGE_FINISH
Function Done
ExecWait '"$INSTDIR\BatchFile" "$INSTDIR" "$DATA_FOLDER"'
FunctionEnd
Vielen Dank im Voraus für Ihre Hilfe.
UPDATE
Ich habe jetzt mit folgendes versucht:
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "$INSTDIR\batch.bat" "$INSTDIR" "$DATA_FOLDER"'
Dies funktionierte nicht, so habe ich die/C out (es zu sehen, was die cmd Aufforderung sagte erscheint, aber schließt sofort) und es scheint, als ob es cmd.exe ausführt, aber das ist es, es vervollständigt den Rest der Ausführung nicht.
UPDATE # 2
Das Kernwissen, das mir geführt bekommen es kann zu arbeiten, finden Sie hier:
Windows batch files: .bat vs .cmd?
Aus welchem Grund .bat-Dateien nicht zustimmen ExecWait.
Am Ende:
ExecWait '"$INSTDIR\BatchFile.cmd" "$INSTDIR" "$DATA_FOLDER"'
funktionierte gut.
Ich konnte .bat fi laufen le, genau wie du es oben für cmd-Dateien geschrieben hast. Sie können auch das Anzeigen des Befehlsfensters unterdrücken, indem Sie nsExec :: Exec anstelle von ExecWait verwenden. – Ben