Saya menjalankan file batch dengan menggunakan skrip NSIS.

Yang menghapus beberapa folder dari lokasi folder yang diberikan.

Setelah eksekusi pengguna batch akan mendapatkan Kotak Pesan.

Masalah:

File batch memulai tetapi sebelum selesai, pengguna mendapatkan Kotak Pesan. Yang berdampak pada kasus penggunaan lebih lanjut.

Bagaimana kita bisa mengadakan proses untuk mendapatkan kotak pesan atau bagaimana kita bisa mendapatkan respon dari file batch yang eksekusi selesai dan kemudian menampilkan kotak pesan.

Berkas Batch:

@echo off

if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
rd "FolderLocation1" /s /q

rd "FolderLocation2" /s /q

Skrip NSIS:

 ExecWait '$INSTDIR\BATCHFILE.bat'
  MessageBox MB_OK $(Message For Message Box)
  Quit
0
RaOne 20 September 2019, 13:29

1 menjawab

Jawaban Terbaik

NSIS menunggu file batch, masalahnya adalah panggilan Anda ke Powershell dengan kata kerja yang tidak menunggu. Menambahkan -wait tampaknya gagal jika digabungkan dengan kata kerja "RunAs".

Alih-alih meningkatkan untuk satu perintah ini, Anda harus meningkatkan penginstal sebagai gantinya.

RequestExecutionLevel admin ; Require admin rights on Vista+ (when UAC is turned on)

!include LogicLib.nsh

Function .onInit
UserInfo::GetAccountType
Pop $0
${If} $0 != "admin" ; Require admin rights on NT4+
    MessageBox mb_iconstop "Administrator rights required!"
    SetErrorLevel 740 ; ERROR_ELEVATION_REQUIRED
    Quit
${EndIf}
FunctionEnd

Page InstFiles

Section
RMDir /R "FolderLocation1"
RMDir /R "FolderLocation2"
SectionEnd
2
Anders 20 September 2019, 19:42