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

Pie*_*ois 5 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
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Dea*_*nna 10

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

  1. 第一行安装来自z:\work\temp.
  2. 第二行,如果是32位模式,则安装SourceDir除了之外的所有内容\Bin64
  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
Run Code Online (Sandbox Code Playgroud)

  • 我尝试过我能想到的每种组合来排除文件夹,但这种方法不起作用。看来我必须提交错误报告。版本5.6.1。 (2认同)