Inno setup 在Inno设置中禁用基于组件选择的控件

Inno setup 在Inno设置中禁用基于组件选择的控件,inno-setup,pascalscript,Inno Setup,Pascalscript,我想根据所选组件禁用自定义页面(VST2DirPage)上的控件。我尝试过以下条件: 如果选择了组件('VST64'),则 开始 VST2DirPage.Buttons[0]。已启用:=False; VST2DirPage.PromptLabels[0]。已启用:=False; VST2DirPage.Edits[0]。已启用:=False; 结束 但是元素似乎总是被禁用的,所以看起来它没有得到正确的值来正常工作。脚本如下: [类型] 名称:“完整”;说明:“{code:FullInstall

我想根据所选组件禁用自定义页面(
VST2DirPage
)上的控件。我尝试过以下条件:

如果选择了组件('VST64'),则
开始
VST2DirPage.Buttons[0]。已启用:=False;
VST2DirPage.PromptLabels[0]。已启用:=False;
VST2DirPage.Edits[0]。已启用:=False;
结束
但是元素似乎总是被禁用的,所以看起来它没有得到正确的值来正常工作。脚本如下:

[类型]
名称:“完整”;说明:“{code:FullInstall}”;
名称:“海关”;说明:“{code:CustomInstall}”;旗帜:iscustom
[组成部分]
名称:“VST64”;说明:“64位VST2”;类型:全套;检查:IS64BIInstallMode
名称:“VST”;描述:“32位VST2”;类型:全套;检查:IS64BIInstallMode
名称:“VST”;描述:“32位VST2”;类型:全套;检查:不是64位安装模式
[守则]
var VST2DirPage:TInputDirWizardPage;
程序初始化;
开始
VST2DirPage:=CreateInputDirPage(wpSelectComponents,
'确认VST2插件目录','',
'选择安装程序应在其中安装VST2插件的文件夹,然后单击“下一步”。',
假');
添加('64位文件夹');
VST2DirPage.Values[0]:=ExpandConstant(“{reg:HKLM\SOFTWARE\VST,VSTPluginsPath{pf}\Steinberg\VSTPlugins}”);
添加('32位文件夹');
VST2DirPage.Values[1]:=ExpandConstant(“{reg:HKLM\SOFTWARE\WOW6432NODE\VST,VSTPluginsPath{pf32}\Steinberg\VSTPlugins}”);
如果不是64位安装模式,则
开始
VST2DirPage.Buttons[0]。已启用:=False;
VST2DirPage.PromptLabels[0]。已启用:=False;
VST2DirPage.Edits[0]。已启用:=False;
结束;
结束;
甚至在显示安装程序之前发生。此时,您还不知道用户将选择哪些组件

只有在知道选择了哪些组件时,才必须更新控件的状态:

  • 离开“选择组件”页面时
  • 或者在进入自定义页面时
这显示了后一种方法(使用以下方法实现):

过程CurPageChanged(CurPageID:Integer);
开始
如果CurPageID=VST2DirPage.ID,则
开始
VST2DirPage.Buttons[0]。已启用:=未选择WizardIsComponentSelected('VST64');
VST2DirPage.PromptLabels[0]。已启用:=VST2DirPage.Buttons[0]。已启用;
VST2DirPage.Edits[0]。已启用:=VST2DirPage.Buttons[0]。已启用;
结束;
结束;
请注意,当选择组件时,上述代码不仅禁用控件。如果用户返回到“选择组件”页面并取消选择组件,它还会重新启用它们


另请参见类似问题: