Inno Setup:也排除目录及其文件

时间:2012-05-18 00:32:28

标签: inno-setup

我在Inno Setup中使用“Exclude”标志,以便根据用户的架构从安装中排除子目录名“Bin32”或“Bin64”。

我想要的是不要安装无用文件夹及其所有文件和子目录。

以下是我目前的规则:

[Files]
Source: "Z:\Work\temp\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

; Exclude
Source: "*"; Excludes: "\Bin64"; DestDir: "{app}"; Flags: recursesubdirs; Check: not Is64BitInstallMode
Source: "*"; Excludes: "\Bin32"; DestDir: "{app}"; Flags: recursesubdirs; Check: Is64BitInstallMode

首先,我不太明白“*”在排除规则的开头是什么意思? 其次,它适用于Bin32 / 64文件夹内的所有子目录,但文件仍然安装,我无法找到一种不安装它们的方法......

THX。

1 个答案:

答案 0 :(得分:8)

每个条目都是一个操作,不受任何其他条目的影响。考虑到这一点,就会发生这种情况:

  1. 第一行安装来自z:\work\temp的所有内容。
  2. 第二行,如果是32位模式,则安装SourceDir以外的所有内容\Bin64
  3. 第三行,如果是64位模式,则安装SourceDir以外的所有内容\Bin32
  4. 我希望您的SourceDir(如果未指定脚本路径)与Z:\Work\Temp相同,那么您最终会以安装的所有内容结束。

    如果您复制第一个条目,并将Excludes(不带\前缀)和Check参数移到其上,它应该可以按您的要求运行:

    [Files]
    Source: "Z:\Work\temp\*"; Excludes: "Bin64"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: not Is64BitInstallMode
    Source: "Z:\Work\temp\*"; Excludes: "Bin32"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: Is64BitInstallMode