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