繁体   English   中英

NSIS - 如何使用单个命令安装具有相似文件夹结构的多个文件?

[英]NSIS - How to install multiple files with similar folder structures using a single command?

问题

我在结构非常相似的文件夹中有多个文件,我想将它们安装在一个公共文件夹中。

我可以通过手动指定要添加的每个文件来做到这一点,如下所示:

SetOutPath "$INSTDIR\Final\Destination"
File /r ".\ParentFolder\Folder1\Same\Path\For\All\Thing1.ext"
File /r ".\ParentFolder\Folder2\Same\Path\For\All\Thing2.ext"
File /r ".\ParentFolder\Folder3\Same\Path\For\All\Thing3.ext"
File /r ".\ParentFolder\Folder4\Same\Path\For\All\Thing4.ext"
File /r ".\ParentFolder\Folder5\Same\Path\For\All\Thing5.ext"

但是,这些文件有 50 多个,而且它们很可能会更改,所以我更愿意以一种将来不需要编辑 NSIS 的方式来执行此操作。

我试过的

我尝试放入通配符,如下所示:

SetOutPath "$INSTDIR\Final\Destination"
File /r ".\ParentFolder\*\Same\Path\For\All\*.ext"

但是,我收到消息File: ".\ParentFolder\*\Same\Path\For\All\*.ext" -> no files found.

在我的File查询中使用多个通配符*有什么问题吗?

查询不同文件夹中的多个文件的正确方法是什么?

不幸的是,您不能在任何地方放置通配符,只能在文件名中放置。

然而,你可以做的是使用!system来执行一个批处理文件(或任何其他命令或应用程序),将 NSIS 指令写入一个文件,你可以!include

Section

SetOutPath $InstDir
!tempfile folders ; temporary .nsh
!system 'for /D %A in (.\ParentFolder\*) do @>>"${folders}" echo File /r "%~A\Same\Path\For\All\*.ext"'
!include "${folders}"
!delfile "${folders}"

SectionEnd

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM