Inno Setup为每个外部文件调用AfterInstall

时间:2018-01-30 23:28:57

标签: inno-setup

我真的很挣这个。我在Inno Setup(5.5.9)配置文件的files部分有一个条目,如下所示:

[Code]
procedure showMsgBoxOfFile;
begin
  MsgBox(ExpandConstant(CurrentFilename), mbInformation, MB_OK);
end;
[Files]
Source: {src}\Some\Path\myFile*Pattern.ext; DestDir: {app}; Flags: external; \
    AfterInstall: showMsgBoxOfFile;

当我运行通过运行上述脚本生成的安装程序时,我会得到一个带有{app}目录的消息框,即使复制了四个文件。这似乎与Inno Setup documentation on BeforeInstall/AfterInstall直接矛盾,后者指出:

  

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

此外,关于Stack Overflow的另一个问题来自想要完全相反的用户(当多个文件被更改时只获得一个通知)。该问题的接受答案表明:

  

安装完所有文件后无法调用[AfterInstall]

我注意到如果从文件副本中删除“外部”标志,我会在每个文件中找到一个消息框。当指定“外部”标志时,有没有办法在每个复制的文件中获得一个通知?有没有人知道是否有计划在Inno Setup帮助文件中记录这种差异?

1 个答案:

答案 0 :(得分:1)

实际上,对于带有external标记的条目,BeforeInstallAnswerInstall函数只被调用一次。

您可以做的是以编程方式复制文件。它可以让您完全控制每个文件的操作。

请参阅Inno Setup: copy folder, subfolders and files recursively in Code section