7

我想在安装文件夹后调用一个函数,但该InstallEnv函数似乎被调用了几次,可能每个文件都是文件夹(待确认)。有没有办法在安装所有这些文件后只调用一次?我不能使用该Run部分,因为我想使用返回码进行错误捕获。

Source: "InputFiles\virtualenv-1.8.2\*"; DestDir: "{tmp}/virtualenv"; \
    Flags: recursesubdirs; AfterInstall: InstallEnv; 
4

2 回答 2

5

在该组文件的安装结束时,无法从单个条目中调用它。但是,可以通过使用虚拟条目在适当的时间调用该函数:

[Files]
Source: "InputFiles\virtualenv-1.8.2\*"; DestDir: "{tmp}\virtualenv"; Flags: recursesubdirs
Source: dummy.txt; DestDir: {tmp}; AfterInstall: InstallEnv

Source文件必须存在,但可以是零字节文件。由于安装到{tmp}它会在安装后被删除,所以它的内容是无关紧要的。

这是有效的,因为[Files]条目是按指定的顺序安装的。

于 2013-11-28T07:10:34.560 回答
3

是的,它每个文件执行一次。关于它的reference说法(我强调):

使用通配符的 [Files] 部分条目的 BeforeInstall 或 AfterInstall 函数在每个匹配通配符的文件中调用一次。使用 CurrentFileName 检查调用函数的文件。

不,安装所有文件后无法调用它一次。如果你打算只运行一次,那不会有问题,因为你可能会声明一个标志变量,表明该函数已被调用,但你想检测它是否是最后一次调用,为此有没有解决方法。

好吧,也许如果您知道哪个文件是从该文件夹中最新安装的,您可以根据CurrentFileName函数调用的结果检查该文件,但我怀疑您能否确定在编译时最后安装哪个文件(因为在运行时,目前无法获取要安装的文件列表)。

于 2013-11-27T16:52:14.490 回答