NSIS yükleyicimde çalıştırmam gereken bir toplu iş dosyası var. Tüm dosyalar çıkarıldıktan sonra çalıştırılmalıdır, (sanırım bu açık, aksi halde toplu iş dosyası henüz mevcut değil).NSIS yükleyicisindeki Toplu İş Dosyasını Yürütme
MUI_PAGE_CUSTOMFUNCTION_PRE dosyasını çalıştırmak için bitiş sayfasıyla kullanmayı denedim, ancak komut dosyasının bu bölümüne geldiğinde hemen üstünden atladığı anlaşılıyor. Aşağıda onu nasıl çağırıyorum.
;;Finish Page
!define MUI_PAGE_CUSTOMFUNCTION_PRE Done
!insertmacro MUI_PAGE_FINISH
Function Done
ExecWait '"$INSTDIR\BatchFile" "$INSTDIR" "$DATA_FOLDER"'
FunctionEnd
Yardımlarınız için şimdiden teşekkür ederiz.
GÜNCELLEME
Şimdi kullanarak denedi aşağıdadır:
ExpandEnvStrings $0 %COMSPEC%
ExecWait '"$0" /C "$INSTDIR\batch.bat" "$INSTDIR" "$DATA_FOLDER"'
Bu işe yaramadı, bu yüzden cmd istemi dediğini görmek için/C çıkardı (o popping up, ama hemen kapanış) ve o cmd.exe yürütür gibi görünüyor ama bu, o yürütmenin geri kalanı tamamlamıyor.
GÜNCELLEME # 2
çalışacak şekilde almak benim için açtı çekirdek bilgi burada bulunabilir: katılmıyorum dosyalar .bat Sebebi ne olursa olsun
Windows batch files: .bat vs .cmd?
ExecWait. Sonunda
:ExecWait '"$INSTDIR\BatchFile.cmd" "$INSTDIR" "$DATA_FOLDER"'
gayet güzel çalıştı. İşte
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
Çalıştırmayı başardım .bat fi le, yukarıda cmd dosyaları için yayınladığınız gibi. Komut penceresini, ExecWait yerine nsExec :: Exec kullanarak görüntülenmesini de engelleyebilirsiniz. – Ben