Installation NSIS-将文件安装到预先存在的、不确定的子文件夹?

Installation NSIS-将文件安装到预先存在的、不确定的子文件夹?,installation,directory,nsis,Installation,Directory,Nsis,我正在尝试将文件安装到预先存在的文件夹中,其结构如下: $APPDATA/somefolder/(uncertainFolder) “不确定文件夹”可以是“1.0”或“2.0” 尽管文件夹名称不同,但相同的文件将安装到“UncertificateFolder”中。我怎样才能做到这一点 提前感谢。使用文件指令安装的文件将解压缩到设置的目录中。一旦知道需要哪个文件夹,在运行时更改此路径就不是问题 如果可能的文件夹名称在编译时已知,则可以使用If/or If/else: !include Logic

我正在尝试将文件安装到预先存在的文件夹中,其结构如下:

$APPDATA/somefolder/(uncertainFolder)
“不确定文件夹”可以是“1.0”或“2.0”

尽管文件夹名称不同,但相同的文件将安装到“UncertificateFolder”中。我怎样才能做到这一点


提前感谢。

使用
文件
指令安装的文件将解压缩到
设置的目录中。一旦知道需要哪个文件夹,在运行时更改此路径就不是问题

如果可能的文件夹名称在编译时已知,则可以使用If/or If/else:

!include LogicLib.nsh
${If} ${FileExists} "$InstDir\SomeFolder\2.0\*.*"
    SetOutPath "$InstDir\SomeFolder\2.0"
${Else}
    SetOutPath "$InstDir\SomeFolder\1.0"
${EndIf}
您还可以在运行时枚举文件和文件夹:

FindFirst $0 $1 "$InstDir\SomeFolder\*.*"
loop:
    StrCmp $1 "" end ; No more files?
    StrCmp $1 "." next ; DOS special name
    StrCmp $1 ".." next ; DOS special name
    IfFileExists "$InstDir\SomeFolder\$1\*.*" 0 next ; Skip files
    DetailPrint "$1 is a folder in $InstDir\SomeFolder"
    SetOutPath "$InstDir\SomeFolder\$1"
    Goto end ; This stops the search at the first folder it finds
next:
    FindNext $0 $1
    goto loop
end:
FindClose $0

FileFunc.nsh中的Locate宏构建在FindFirst/FindNext之上,如果您喜欢它的语法,也可以使用它……

我怀疑“不确定性”是否真的是一个有效的标记(我猜很多提问者对很多事情都不确定!)。是否需要检查
1.0
2.0
是否存在,然后选择一个,或者是否有其他标准?是。检查其中一个是否存在,然后选择一个将是完美的。如何做到这一点?看起来在
FileFunc.nsh
或(更新的)中,应该能够告诉您是否存在其中一个。我也没用过,所以不能给你们任何示例代码。我为要安装到两个不同位置的两个文件设置了两个部分。