7

我在 Inno Setup 中使用“排除”标志,以便根据用户的体系结构从安装中排除子目录名称“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 文件夹中的所有子目录,但文件仍然已安装,我无法找到不安装它们的方法......

谢谢。

4

1 回答 1

13

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

  1. 第一行从z:\work\temp.
  2. 第二行,如果在 32 位模式下,安装SourceDir除了\Bin64
  3. 第 3 行,如果在 64 位模式下,安装所有内容,SourceDir除了\Bin32

我希望您的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
于 2012-05-18T14:11:36.967 回答