我正在尝试在Inno Setup脚本的目录名称内使用通配符时递归获取目录中的所有文件。
我碰到过有关文件名的示例,但没有关于目录搜索的示例。
用例: 基本上,我们已经将NuGet软件包用于内部开发项目。因此,每个项目都制作一个NuGet包,其他项目和/或开发人员可以使用它。
其中一部分,我们希望使用Inno Setup来使用NuGet包中的dll和/或文件。
例如,我们需要找到与 - url: "http://st4ple.github.io"
+ url: "http://cerbospace.github.io"
匹配的包文件夹,例如"../packages/PackagesA.../"
。
与此How to bundle run-time-only dependencies from NuGet packages in Inno Setup installer?相似,这几乎是我想要的,但是该代码似乎在我的Inno脚本中不起作用。
对如何解决此问题有任何帮助或建议吗?
答案 0 :(得分:1)
您可以定义一个Inno Setup preprocessor函数来解析目录文件掩码。为此使用FindFirst
function:
#define FindFolder(Path) \
Local[0] = FindFirst(Path, faDirectory), \
Local[0] ? AddBackslash(ExtractFileDir(Path)) + FindGetFileName(Local[0]) : Path
[Files]
Source: "{#FindFolder("..\packages\PackagesA*")}\*.*"; DestDir: "{app}"; \
flags: recursesubdirs
如果在脚本末尾添加SaveToFile
调用:
#expr SaveToFile(AddBackslash(SourcePath) + "Preprocessed.iss")
...您将看到上面的代码解析为:
[Files]
Source: "..\packages\PackageA1.2.0\*.*"; DestDir: "{app}"; flags: recursesubdirs
如果找不到此类文件夹,则代码解析为:
[Files]
Source: "..\packages\PackageA*\*.*"; DestDir: "{app}"; flags: recursesubdirs
...,然后编译器将失败,并显示“找不到与...匹配的文件”。。