使用 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
我正在使用 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