Ho un file batch che devo eseguire nel mio programma di installazione NSIS. Deve essere eseguito dopo che tutti i file sono stati estratti, (suppongo che sia ovvio, altrimenti il file batch non esisterebbe ancora).Esecuzione del file batch nel programma di installazione NSIS
Ho provato a utilizzare MUI_PAGE_CUSTOMFUNCTION_PRE con la pagina finale per eseguirlo, ma quando arriva a quella parte dello script sembra che salti proprio sopra. Di seguito è come lo invoco.
;;Finish Page
!define MUI_PAGE_CUSTOMFUNCTION_PRE Done
!insertmacro MUI_PAGE_FINISH
Function Done
ExecWait '"$INSTDIR\BatchFile" "$INSTDIR" "$DATA_FOLDER"'
FunctionEnd
Grazie in anticipo per il vostro aiuto.
UPDATE
Ora ho provato ad utilizzare il seguente:
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "$INSTDIR\batch.bat" "$INSTDIR" "$DATA_FOLDER"'
Questo non ha funzionato, così ho preso il/C per vedere ciò che il richiamo del cmd stava dicendo (si sta spuntando, ma chiudendo immediatamente) e sembra come se eseguisse cmd.exe ma il gioco è fatto, non completa il resto dell'esecuzione.
UPDATE # 2
le conoscenze di base che ha portato a me convincerlo per lavorare può essere trovato qui:
Windows batch files: .bat vs .cmd?
Per qualsiasi motivo .bat file non sono d'accordo con ExecWait.
Alla fine:
ExecWait '"$INSTDIR\BatchFile.cmd" "$INSTDIR" "$DATA_FOLDER"'
ha lavorato bene.
Sono stato in grado di eseguire .bat fi le, proprio come hai postato sopra per i file cmd. È anche possibile disattivare la visualizzazione della finestra di comando utilizzando nsExec :: Exec, anziché ExecWait. – Ben