在安装安装程序之前,我正在检查所需的软件,如果不存在该软件,则显示带有“确定”按钮的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
答案 0 :(得分:1)
Abort
取消了您正在使用的功能,请在SendMessage
之前尝试Abort
。但是,发送WM_QUIT是邪恶的,应该将其作为最后的选择。应用程序通常不设计为处理意外的WM_QUIT消息。
您的问题没有上下文,所以我不知道该函数在哪里调用。 Quit
也可能有效,具体取决于调用该回调的方式,并且始终是更好的选择。