Inno setup Inno安装卸载程序:在创建WizardForm之前尝试访问它

Inno setup Inno安装卸载程序:在创建WizardForm之前尝试访问它,inno-setup,Inno Setup,我的向导表单有问题,当我尝试卸载程序时,我出现以下错误: 运行时错误: 内部错误:在创建WizardForm之前尝试访问它 我需要使用循环创建软中止卸载过程(例如,当应用程序正在运行且用户运行卸载时,程序必须检查进程,如果应用程序正在运行,则通知用户,如果用户按下取消按钮,则程序中止卸载),我已尝试使用ExitProcess(0)但它并不温和 代码部分: 过程CurUninstallStep已更改(CurUninstallStep:TUninstallStep); 开始 第二步 usUnins

我的
向导表单
有问题,当我尝试卸载程序时,我出现以下错误:

运行时错误:

内部错误:在创建WizardForm之前尝试访问它

我需要使用循环创建软中止卸载过程(例如,当应用程序正在运行且用户运行卸载时,程序必须检查进程,如果应用程序正在运行,则通知用户,如果用户按下取消按钮,则程序中止卸载),我已尝试使用
ExitProcess(0)但它并不温和

代码部分:

过程CurUninstallStep已更改(CurUninstallStep:TUninstallStep);
开始
第二步
usUninstall:
开始
如果MsgBox('在卸载之前关闭{#AppName}',mbConfirmation,MB#YESNO)=y那么
开始
{用户单击“是”}
结束
其他的
开始
MsgBox('错误',mbError,MB_OK);
CancelWithoutPrompt:=真;
{ExitProcess(0);}
WizardForm.close;
结束
结束;
结束;
结束;
您解决问题的方法是错误的,请参见结尾

无论如何,为了解决您眼前的问题:
WizardForm
是一个安装程序表单。它不存在于卸载程序中。在卸载程序中,您有
UninstallProgressForm
。看

但您不想调用
UninstallProgressForm.Close
。这是错误的,原因如下


Inno安装程序有一个内置机制,可以在应用程序运行时阻止(un)安装程序继续进行。这个

即使您想构建自己的解决方案,也可以使用,通过返回
False
,您可以轻松、干净地退出卸载程序。当然,在退出之前,您可以显示任何您喜欢的消息。就用吧


所有这些都包含在我对

Maertin Prikryl的回答中,主要问题是此错误-在创建WizardForm之前尝试访问它。Martin Prikryl,我想通过“中止”部分中止卸载,窗口为“中止卸载。用户已取消安装”。我认为这可以用WizardForm来完成。