Inno setup 在Inno设置中单击“下一步”按钮时验证自定义页面上的数据

Inno setup 在Inno设置中单击“下一步”按钮时验证自定义页面上的数据,inno-setup,pascalscript,Inno Setup,Pascalscript,我已经成功地获得了一个基本脚本,它可以显示一个向导(使用CreateInputFilePage)供用户识别我用来更新XML文件中某些设置的文件位置。但是,我希望对所选文件的输入执行一些基本检查,而不是简单地接受用户提供的任何内容。例如,当内容无效时,如果用户试图按**下一步“*,则显示一个消息框。我不完全确定如何处理向导产生的事件,以及如何在继续执行下一个任务之前对数据应用任何类型的验证规则。目前,我已定义了一个简单的InitializeWizard过程 [代码] 变量 页面:TInputFil

我已经成功地获得了一个基本脚本,它可以显示一个向导(使用
CreateInputFilePage
)供用户识别我用来更新XML文件中某些设置的文件位置。但是,我希望对所选文件的输入执行一些基本检查,而不是简单地接受用户提供的任何内容。例如,当内容无效时,如果用户试图按**下一步“*,则显示一个消息框。我不完全确定如何处理向导产生的事件,以及如何在继续执行下一个任务之前对数据应用任何类型的验证规则。目前,我已定义了一个简单的
InitializeWizard
过程

[代码]
变量
页面:TInputFileWizardPage;
程序初始化;
开始
{向导}
页面:=CreateInputFilePage(
wpWelcome,'选择数据文件位置','数据文件位于何处',
'选择dFile.dba文件所在的位置,然后单击“下一步”。);
{添加项目(标题为空)}
Page.Add('dFile.dba'、'*.dba |*.'、'.dba'的位置);
结束;
然后,当触发
CurStepChanged
事件时,我恢复文件名和位置,并使用它更新XML文件中的某些设置

过程CurStepChanged(CurStep:TSetupStep);
变量
dFull:字符串;
dPath:字符串;
dName:String;
开始
如果(CurStep=ssPostInstall),则
开始
{恢复数据文件位置}
dFull:=页值[0];
dPath:=提取文件路径(dFull);
dName:=提取文件名(dFull);
{将文件位置和名称写入settings.xml}
UpdateSettingsXML(dPath,'dFileDirectory');
更新设置sxml(dName,'dFileName');
结束;
结束;

您可以使用
onnextbutton单击自定义事件进行验证:

函数FileIsValid(路径:string):布尔值;
开始
结果:={您的验证};
结束;
变量
页面:TInputFileWizardPage;
函数FilePageNextButtonClick(发送方:TWizardPage):布尔值;
开始
结果:=真;
如果不是FileIsValid(Page.Values[0]),则
开始
MsgBox('文件无效',mbError,MB_OK);
结果:=假;
结束;
结束;
程序初始化;
开始
页面:=CreateInputFilePage(…);
第页添加(…);
Page.OnNextButtonClick:=@FilePageNextButtonClick;
结束;

有关替代方法,请参阅