我想在安装文件夹后调用一个函数,但该InstallEnv
函数似乎被调用了几次,可能每个文件都是文件夹(待确认)。有没有办法在安装所有这些文件后只调用一次?我不能使用该Run
部分,因为我想使用返回码进行错误捕获。
Source: "InputFiles\virtualenv-1.8.2\*"; DestDir: "{tmp}/virtualenv"; \
Flags: recursesubdirs; AfterInstall: InstallEnv;
我想在安装文件夹后调用一个函数,但该InstallEnv
函数似乎被调用了几次,可能每个文件都是文件夹(待确认)。有没有办法在安装所有这些文件后只调用一次?我不能使用该Run
部分,因为我想使用返回码进行错误捕获。
Source: "InputFiles\virtualenv-1.8.2\*"; DestDir: "{tmp}/virtualenv"; \
Flags: recursesubdirs; AfterInstall: InstallEnv;
在该组文件的安装结束时,无法从单个条目中调用它。但是,可以通过使用虚拟条目在适当的时间调用该函数:
[Files]
Source: "InputFiles\virtualenv-1.8.2\*"; DestDir: "{tmp}\virtualenv"; Flags: recursesubdirs
Source: dummy.txt; DestDir: {tmp}; AfterInstall: InstallEnv
该Source
文件必须存在,但可以是零字节文件。由于安装到{tmp}
它会在安装后被删除,所以它的内容是无关紧要的。
这是有效的,因为[Files]
条目是按指定的顺序安装的。
是的,它每个文件执行一次。关于它的reference
说法(我强调):
使用通配符的 [Files] 部分条目的 BeforeInstall 或 AfterInstall 函数在每个匹配通配符的文件中调用一次。使用 CurrentFileName 检查调用函数的文件。
不,安装所有文件后无法调用它一次。如果你打算只运行一次,那不会有问题,因为你可能会声明一个标志变量,表明该函数已被调用,但你想检测它是否是最后一次调用,为此有没有解决方法。
好吧,也许如果您知道哪个文件是从该文件夹中最新安装的,您可以根据CurrentFileName
函数调用的结果检查该文件,但我怀疑您能否确定在编译时最后安装哪个文件(因为在运行时,目前无法获取要安装的文件列表)。