每个人。我正在尝试将一些"parentdir"与文件一起包含到我的安装程序中。问题是:我使用/r参数来包括所有文件和文件夹,如下所示:
File /r "parentdir*.*"
此命令包括所有文件和子文件夹。
是否有机会将FILESONLY从所有子文件夹(以下示例)包括到out目录?
我拥有的是:
<dir>parentdir
file1.txt
file2.txt
<dir> directory1
file3.txt
file4.txt
<dir> directory2
file5.txt
file6.txt
<dir> directory3
file6.txt
我想在我的OUT目录中得到的是:
<dir>parentdir
file1.txt
file2.txt
file3.txt
file4.txt
file5.txt
file6.txt
file6.txt
我已经试过这样做了:
SetOutPath "$INSTDIRparentdir"
File "parentdirdirectory1*.*"
File "parentdirdirectory2*.*"
File "parentdirdirectory2directory3*.*"
我得到了我想要的。但是
不使用子文件夹的名称有机会做到这一点吗?当脚本不知道所有子文件夹的确切名称时(如果要添加新的子文件夹),我需要它。
我可以让我的安装程序那么灵活吗?
谢谢!
您可以创建一个批处理文件(或任何其他程序),用于搜索磁盘并将File
指令写入.nsh文件。.nsi将首先使用!system
来执行生成.nsh的外部应用程序,然后使用!include
it:
Section
SetOutPath "$INSTDIRparentdir"
!tempfile filelist
!system '"generatefilelist.bat" ".parentdir" "${filelist}"'
!include "${filelist}"
!delfile "${filelist}"
SectionEnd
批处理文件可能看起来像这样:
@echo off
FOR /R "%~1" %%A IN (*.txt) DO (
>> "%~2" echo.File "%%~A"
)
如果模式足够简单,您不需要单独的批处理文件,您可以直接使用cmd.exe:
Section
SetOutPath "$INSTDIRparentdir"
!tempfile filelist
!system 'FOR /R ".parentdir" %A IN (*.txt) DO @( >> "${filelist}" echo.File "%~A" )'
!include "${filelist}"
!delfile "${filelist}"
SectionEnd