InnoSetup:尝试排除除一个子文件夹以外的所有子文件夹

时间:2016-09-13 23:22:47

标签: inno-setup

我有一个InnoSetup脚本应该排除一个子文件夹,其中包含其他子文件夹(> 40)除了之外的其他文件夹。 在编译器输出中,我确实看到此子文件夹中的文件正在压缩,但安装不会创建该文件夹,也不会在其他任何位置复制文件。

脚本如下所示:
(define (my-even? n) (= 0 (modulo n 2))) 是包含其他文件夹的文件夹 - 我只想包含Release\extra\more\subs。)

Release\extra\more\subs\need_this_one

第一行应该复制[Files] ; Use all files and folders except some special ones Source: "Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; Excludes: "more\subs" ; Do use some specific folders Source: "Release\extra\more\subs\need_this_one\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs 中的所有文件和文件夹,但路径匹配“Release”的任何子文件夹除外 - 那个。

我的印象是第二行会复制more\subs子文件夹及其中的文件 -

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

好吧,我似乎有回答自己问题的习惯。 ;)

问题是DestDir需要{app}之上的路径才能知道放置文件的位置。

因此,有效的脚本将是:

[Files]  
; Use all files and folders except some special ones
Source: "Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; Excludes: "more\subs"
; Do use some specific folders
Source: "Release\extra\more\subs\need_this_one\*"; DestDir: "{app}\extra\more\subs\need_this_one"; Flags: ignoreversion recursesubdirs

这确实有道理,虽然不清楚为什么,如果没有路径,它不会简单地将文件从need_this_one复制到{app} ......