Inno Setup仅排除树根中的一个子目录,而不排除树中具有相同名称的所有其他子目录

问题描述

我的if 1 = 1 then "same" else "different" |>! printfn "The numbers are %s." |> printfn "Yes,they are %s." 标头中有此内容

[Files]

应该排除[Files] Source: "{#PathToRepoRoot}\Development\aaa\bbb\libs\MyApp.exe"; DestDir: "{app}"; \ Flags: ignoreversion Source: "{#PathToRepoRoot}\Development\aaa\bbb\*"; DestDir: "{app}"; \ Excludes: "*.pyc,{#PathToRepoRoot}\Development\aaa\bbb\Build"; \ Flags: ignoreversion recursesubdirs createallsubdirs 文件夹中的所有文件,但是由于某些原因,它不会。我尝试将Build更改为bbb\*bbb\,但这无济于事。我也查看了Inno Setup : Exclude a directory and its files also,但这没有帮助。奇怪的是,bbb文件被排除在外

我发现做.pyc可以满足我的要求。据我了解,这将排除所有名为Excludes: "*.pyc,Build";文件。就我而言,这不是问题,因为我只有一个这样的文件。但是,我确实更倾向于排除在外。

解决方法

我相信Excludes parameter中的掩码是根据从根文件夹({#PathToRepoRoot}\Development\aaa\bbb)开始的相对路径来评估的。因此,您只想匹配Build

但是,实际上,如果仅将Build用作排除掩码,它将屏蔽树中任何位置的所有Build文件和文件夹,因为掩码与(相对)的末尾匹配默认情况下的路径。在掩码前面加上一个反斜杠,以告知Inno Setup根据(相对)路径的开始对其进行评估:

Excludes: \Build