Inno setup 仅当在Inno设置中选择了特定组件时,才显示自定义页面并将输入保存到文件

Inno setup 仅当在Inno设置中选择了特定组件时,才显示自定义页面并将输入保存到文件,inno-setup,pascalscript,Inno Setup,Pascalscript,我正在尝试为我的应用程序构建一个设置,它包含两个部分:服务器和客户端。客户端部分需要有一个由用户输入的IP地址。我正在使用自定义页面提示输入IP地址。但我需要显示自定义页面,只有当用户选择“客户端”组件时 [Components] Name: "Serveur"; Description: "Server installation"; Types: Serveur; Flags: exclusive; Name: "Client"; Description: "Client installat

我正在尝试为我的应用程序构建一个设置,它包含两个部分:服务器和客户端。客户端部分需要有一个由用户输入的IP地址。我正在使用自定义页面提示输入IP地址。但我需要显示自定义页面,只有当用户选择“客户端”组件时

[Components]
Name: "Serveur"; Description: "Server installation"; Types: Serveur; Flags: exclusive; 
Name: "Client"; Description: "Client installation"; Types: Client; Flags: exclusive

[Types]
Name: "Serveur"; Description: "Server Installation"
Name: "Client"; Description: "Client Installation"
[代码]
变量
页面:TInputQueryWizardPage;
ip:字符串;
过程初始化Wizard();
开始
页面:=CreateInputQueryPage(欢迎使用,
“服务地址”,第192.168.1.120段示例,
“维列兹引荐信”和“服务地址”;
第页添加('IP:',错误);
Page.Values[0]:=ExpandConstant('192.168.x.x');
结束;
函数NextButtonClick(CurPageID:Integer):布尔值;
开始
如果(CurPageID=Page.ID),则
开始
ip:=页值[0];
SaveStringToFile('C:\Program Files\AppClient\ipAddress.txt',ip,False);
结束;
结果:=真;
结束;
  • 您的自定义页面必须仅位于“选择组件”页面之后,因此您需要将
    wpSelectComponents
    传递到
    CreateInputQueryPage

    var
    页面:TInputQueryWizardPage;
    过程初始化Wizard();
    开始
    第页:=
    CreateInputQueryPage(
    wpSelectComponents,'IP地址du serveur','par示例:192.168.1.120',
    “维列兹引荐信”和“服务地址”;
    第页添加('IP:',错误);
    Page.Values[0]:='192.168.x.x';
    结束;
    
    (还要注意,对不包含任何常量的字符串文本调用
    ExpandConstant
    没有意义)

  • 未选择“客户端”组件时,跳过自定义页面:

    函数IsClient:Boolean;
    开始
    结果:=IsComponentSelected('Client');
    结束;
    函数ShouldSkipPage(PageID:Integer):布尔值;
    开始
    结果:=假;
    如果PageID=Page.ID,则
    开始
    结果:=非IsClient;
    结束;
    结束;
    
    另见

  • 在用户最终确认安装之前,行为良好的安装程序不应对系统进行任何修改。所以,只有在安装真正开始时才进行任何更改,而不是在用户单击自定义页面上的“下一步”时

    此外,不能硬编码文件路径,请使用
    {app}
    常量

    过程CurStepChanged(CurStep:TSetupStep);
    变量
    IP:字符串;
    开始
    如果(CurStep=ssInstall)和IsClient(),则
    开始
    IP:=页值[0];
    SaveStringToFile(ExpandConstant({app}\ipAddress.txt'),IP,False);
    结束;
    结束;