Inno setup 使用“文件”部分自定义页面中的两个/多个选定目录

Inno setup 使用“文件”部分自定义页面中的两个/多个选定目录,inno-setup,pascalscript,Inno Setup,Pascalscript,我需要创建两个目的地自定义页面 我已经做到了: 定义MyAppName TESTPROG [设置] AppName={MyAppName} DefaultDirName=C:\test\{MyAppName} DefaultGroupName={MyAppName} [守则] 变量 第页:TInputDirWizardPage; DataDir:字符串; 程序初始化; 开始 页面:=CreateInputDirPagewpWelcome, “选择个人数据位置”、“个人数据文件应存储在何处?”,

我需要创建两个目的地自定义页面

我已经做到了:

定义MyAppName TESTPROG [设置] AppName={MyAppName} DefaultDirName=C:\test\{MyAppName} DefaultGroupName={MyAppName} [守则] 变量 第页:TInputDirWizardPage; DataDir:字符串; 程序初始化; 开始 页面:=CreateInputDirPagewpWelcome, “选择个人数据位置”、“个人数据文件应存储在何处?”, “个人数据文件将存储在以下文件夹中。”+ '要继续,请单击“下一步”。'+ '如果要选择其他文件夹,请单击“浏览”。', 假,“新文件夹”; 页面。添加“本地应用程序”; 第页。添加“本地存储”; Page.Values[0]:='C:\My Program'; Page.Values[1]:='D:\My Program'; DataDir:=页值[0]; 终止 我需要知道如何使用Page.Values[0]和Page.Values[1]设置DefaultDirName以及在何处设置

我需要它,因为我的文件的某些部分将在一个文件夹中,而其他部分将在另一个文件夹中

例如:

[Files]
Source: C:\TEST\DLL1.bat; DestDir: Page.Values[0]\sys1;
Source: C:\TEST\DLL2.bat; DestDir: Page.Values[1]\sys2;
使用:

[档案] 来源:C:\TEST\DLL1.bat;DestDir:{code:GetDir | 0}\sys1 来源:C:\TEST\DLL2.bat;DestDir:{code:GetDir | 1}\sys2 [守则] 变量 第页:TInputDirWizardPage; 函数GetDirParam:string:string; 开始 结果:=页面值[StrToIntParam]; 终止 程序初始化; 开始 页面:=CreateInputDirPage。。。; ... 终止 若要使用TInputDirWizardPage中的第一个路径之一,而不是选择目标位置页面中的路径,则有三个选项

使用以下命令禁用“选择目标位置”页面:

将路径从TInputDirWizardPage复制到隐藏的Select 目标位置页面,当用户按下下一步按钮时:

变量 第页:TInputDirWizardPage; 函数InputDirPageNextButtonClickSender:TWizardPage:Boolean; 开始 {使用第一条路径作为目标路径} WizardForm.DirEdit.Text:=页面值[0]; 结果:=真; 终止 程序初始化; 开始 页面:=CreateInputDirPage。。。; ... Page.OnNextButtonClick:=@InputDirPageNextButtonClick; 终止

补充说明,您也可以考虑复制初始WiZADRADE窗体。通过这种方式,您可以确保1在重新安装/升级时,重复使用以前选择的值;2个工作。那就看吧

将的所有用法替换为{code:GetDir | 0}

使Inno安装程序不使用以下命令创建{app}路径:

这意味着DisableDirPage=yes

并使用以下命令将卸载文件存储在第一个路径中:

与1相反,使用这种方法,以前的安装路径不会被重新用于以后的升级/重新安装。要实现这一点,请参见

不要使用CreateInputDirPage,而是在选择目标位置页面SelectDirPage上添加第二个路径输入框

使用:

[档案] 来源:C:\TEST\DLL1.bat;DestDir:{code:GetDir | 0}\sys1 来源:C:\TEST\DLL2.bat;DestDir:{code:GetDir | 1}\sys2 [守则] 变量 第页:TInputDirWizardPage; 函数GetDirParam:string:string; 开始 结果:=页面值[StrToIntParam]; 终止 程序初始化; 开始 页面:=CreateInputDirPage。。。; ... 终止 若要使用TInputDirWizardPage中的第一个路径之一,而不是选择目标位置页面中的路径,则有三个选项

使用以下命令禁用“选择目标位置”页面:

将路径从TInputDirWizardPage复制到隐藏的Select 目标位置页面,当用户按下下一步按钮时:

变量 第页:TInputDirWizardPage; 函数InputDirPageNextButtonClickSender:TWizardPage:Boolean; 开始 {使用第一条路径作为目标路径} WizardForm.DirEdit.Text:=页面值[0]; 结果:=真; 终止 程序初始化; 开始 页面:=CreateInputDirPage。。。; ... Page.OnNextButtonClick:=@InputDirPageNextButtonClick; 终止

补充说明,您也可以考虑复制初始WiZADRADE窗体。通过这种方式,您可以确保1在重新安装/升级时,重复使用以前选择的值;2个工作。那就看吧

将的所有用法替换为{code:GetDir | 0}

使Inno安装程序不使用以下命令创建{app}路径:

这意味着DisableDirPage=yes

并使用以下命令将卸载文件存储在第一个路径中:

与1相反,使用这种方法,以前的安装路径不会被重新用于以后的升级/重新安装。要实现这一点,请参见

不要使用CreateInputDirPage,而是在选择目标位置页面SelectDirPage上添加第二个路径输入框

DisableDirPage=yes
CreateAppDir=no
UninstallFilesDir={code:GetDir|0}