使用 NSIS 批量删除文件夹后获取响应

Get response after deleting folder by batch using NSIS

我正在使用 NSIS 脚本执行批处理文件。

从给定文件夹位置删除一些文件夹。

执行批处理后用户会得到消息框。

问题:

批处理文件开始,但在完成之前用户正在获取消息框。这会影响更多用例。

我们如何保持获取消息框的过程,或者我们如何从批处理文件中获得执行完成的响应,然后显示消息框。

批处理文件:

@echo off

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

rd "FolderLocation2" /s /q

NSIS 脚本:

 ExecWait '$INSTDIR\BATCHFILE.bat'
  MessageBox MB_OK $(Message For Message Box)
  Quit

NSIS 等待批处理文件,问题是您使用不等待的动词调用 Powershell。添加 -wait 似乎与 "RunAs" 动词组合时失败。

您应该 elevate your installer 而不是提升这个单一命令。

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

!include LogicLib.nsh

Function .onInit
UserInfo::GetAccountType
Pop [=10=]
${If} [=10=] != "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