Inno setup 在安装目录树之前执行一次脚本

Inno setup 在安装目录树之前执行一次脚本,inno-setup,pascalscript,directory-tree,Inno Setup,Pascalscript,Directory Tree,我正在尝试编写一个Inno安装程序来安装,然后运行其他安装程序。我遇到的问题是在尝试安装Cygwin时。我已经下载了Cygwin和我需要的所有软件包,以便我可以执行本地安装。然后我想在Cygwin安装中添加额外的文件和目录 我的第一次尝试是这样的: [Files] Source: "{#Cygwin}\Cygwin\*"; DestDir: {tmp}\cygwin; Flags: recursesubdirs; Source: "{#Cygwin}\additional\*"; DestDir

我正在尝试编写一个Inno安装程序来安装,然后运行其他安装程序。我遇到的问题是在尝试安装Cygwin时。我已经下载了Cygwin和我需要的所有软件包,以便我可以执行本地安装。然后我想在Cygwin安装中添加额外的文件和目录

我的第一次尝试是这样的:

[Files]
Source: "{#Cygwin}\Cygwin\*"; DestDir: {tmp}\cygwin; Flags: recursesubdirs;
Source: "{#Cygwin}\additional\*"; DestDir: {tmp}\cygwin\additional; Flags: recursesubdirs

[Run]
Filename: "{tmp}\cygwin\setup-x86_64.exe"; Parameters: "-q -L"; WorkingDir: "{tmp}";
但这意味着我必须有一个脚本来添加额外的文件,因为在通过
[Run]
部分中的命令实际安装Cygwin之前,没有地方可以放置它们

在添加附加文件之前,我尝试在
[Files]
部分中使用
安装之前的
脚本来运行Cygwin安装程序,但因为我必须使用带有
源代码的通配符:“{Cygwin}\additional\*”对目录树中的每个文件调用一次脚本

Inno安装程序的
[Files]
部分似乎只接受源文件,而不接受源目录,除非该目录具有通配符


有没有一种方法可以让它在不使用通配符的情况下从目录树安装所有内容,或者有没有一种方法可以让
BeforeInstall
脚本只运行一次,而不管复制了多少文件?

仅在第一次调用
BeforeInstall
函数时安装Cygwin

var
CygwinInstalled:布尔值;
安装前的程序;
开始
如果安装了Cygwin,那么
开始
日志(“Cygwin已安装”);
结束
其他的
开始
日志(“安装Cygwin”);
{在此处安装Cygwin}
CygwinInstalled:=真;
结束;
结束;

太简单了!谢谢我试着给你的答案投赞成票,但我还没有足够的声望。