在消息框中单击“确定”后,从消息框打开浏览器后如何关闭父对话框

时间:2018-12-17 16:29:19

标签: nsis

在安装安装程序之前,我正在检查所需的软件,如果不存在该软件,则显示带有“确定”按钮的MessageBox。用户单击时 在“确定”上,它导航到给定的URL以安装缺少的软件。但是这里的问题是,从“消息”框导航到支持页面时,父对话框没有关闭。

当用户单击“确定”按钮时,我尝试了不同的方法来关闭父对话框。请建议我是否有办法关闭dilaog。

 Function IsDotNetInstalled
    ClearErrors
    ReadRegStr $0 HKLM "Software\Microsoft\.NETFramework\policy\v3.0" "20319"
    IfErrors Error
    Goto End

    Error:

    MessageBox MB_OK|MB_ICONSTOP "Setup could not detect Microsoft .NET Framework v4.0 on this computer. $\r$\n$\r$\n Please install Microsoft .NET Framework v4.0 and run setup again. $\r$\n$\r$\n Click on OK to navigate to the Microsoft Support page" IDOK

    ExecShell open "https://www.microsoft.com/en-in/download/details.aspx?id=17718"

   SendMessage $HwndParent ${WM_QUIT} 0 0
   Abort
   Quit

    End:
    SendMessage $HwndParent ${WM_QUIT} 0 0
    Abort
    Quit
    FunctionEnd

我正在从以下部分调用上述函数:

Section "RegistryTest (required)"
SectionIn RO

Call IsDotNetInstalled
ExecShell "" "$INSTDIR\Display.exe"

SectionEnd

1 个答案:

答案 0 :(得分:1)

Abort取消了您正在使用的功能,请在SendMessage之前尝试Abort。但是,发送WM_QUIT是邪恶的,应该将其作为最后的选择。应用程序通常不设计为处理意外的WM_QUIT消息。

您的问题没有上下文,所以我不知道该函数在哪里调用。 Quit也可能有效,具体取决于调用该回调的方式,并且始终是更好的选择。