取消执行的Powershell脚本后如何取消NSIS安装程序?

时间:2019-06-12 10:16:32

标签: powershell nsis

对于我的软件套件,我使用NSIS创建了一个安装程序。该安装程序包括带有GUI的powershellscript。我想在用户单击Powershell gui中的“取消”按钮后取消安装过程。

该脚本创建带有列表框的powershell gui。列表框项目将被写入txt文件中。有两个按钮:一个用于“确定”-将项目写入文件,另一个按钮是“取消”按钮。单击确定按钮后,将打开第二个表单。

powershell脚本中的一些代码段:

$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel

if('Ok' -eq $form.ShowDialog())
 {
   $msg = "Item copied to txt-file"
   [System.Windows.Forms.MessageBox]::Show($msg,"Confirmation",0)
 }

通过此指令,我在NSIS中调用PS脚本:

ExecWait "powershell -ExecutionPolicy Bypass -WindowStyle Hidden -File nameofscript.ps1 -FFFeatureOff"

1 个答案:

答案 0 :(得分:1)

如果在取消时从PowerShell返回退出代码,则可以从NSIS脚本中处理退出代码:

Powershell:

if ($form.ShowDialog() -eq [System.Windows.Forms.DialogResult]::Cancel)
{
    exit 1
}

NSIS:

ClearErrors
ExecWait "powershell -ExecutionPolicy Bypass -WindowStyle Hidden -File nameofscript.ps1 -FFFeatureOff"
IfErrors 0 noError
; Handle error here
noError:

另请参阅:how to get the exit code of other application in nsis