我在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。
答案 0 :(得分:8)
每个条目都是一个操作,不受任何其他条目的影响。考虑到这一点,就会发生这种情况:
z:\work\temp
的所有内容。SourceDir
以外的所有内容\Bin64
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