Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在NSIS安装脚本中生成常量数组?_Nsis - Fatal编程技术网

如何在NSIS安装脚本中生成常量数组?

如何在NSIS安装脚本中生成常量数组?,nsis,Nsis,我有大量NSIS安装脚本(.nsi文件),它们只是定义了一组常量,然后主安装程序逻辑驻留了一个包含文件(.nsh),这是每个安装程序所共有的。其中一个包含文件如下所示: !ifdef ABC_SUBFOLDER RMDir /r "$ABCPath\Data\${ABC_SUBFOLDER}" SetOutPath "$ABCPath\Data\${ABC_SUBFOLDER}" File /r "${LOCAL_FOLDER}\ABC\${ABC_SUBFOLDER}\

我有大量NSIS安装脚本(.nsi文件),它们只是定义了一组常量,然后主安装程序逻辑驻留了一个包含文件(.nsh),这是每个安装程序所共有的。其中一个包含文件如下所示:

!ifdef ABC_SUBFOLDER
    RMDir /r "$ABCPath\Data\${ABC_SUBFOLDER}"
    SetOutPath "$ABCPath\Data\${ABC_SUBFOLDER}"
    File /r "${LOCAL_FOLDER}\ABC\${ABC_SUBFOLDER}\*.*"
!endif

!ifdef ABC_SUBFOLDER2
    RMDir /r "$ABCPath\Data\${ABC_SUBFOLDER2}"
    SetOutPath "$ABCPath\Data\${ABC_SUBFOLDER2}"
    File /r "${LOCAL_FOLDER2}\ABC\${ABC_SUBFOLDER2}\*.*"
!endif

!ifdef ABC_SUBFOLDER3
    RMDir /r "$ABCPath\Data\${ABC_SUBFOLDER3}"
    SetOutPath "$ABCPath\Data\${ABC_SUBFOLDER3}"
    File /r "${LOCAL_FOLDER3}\ABC\${ABC_SUBFOLDER3}\*.*"
!endif

。。。以此类推,最多15个子文件夹可能在顶级.nsi文件中定义,也可能未定义。我的问题是,NSIS中是否有更好的语法来实现这一点,而无需每次需要增加子文件夹的数量时都进行剪切和粘贴?

您可以使用${VAR}访问不同的变量,具体取决于另一个变量的值。e、 g

RMDir /r "$ABCPath\Data\${ABC_SUBFOLDER${FOLDERNUMBER}}"

好主意。这将需要工作的基础上!ifdef语句,但如果我可以将它放在一个带有递增S{FOLDERNUMBER}的循环中,那么这可能会满足我的需要。如果可行的话,我会尝试并标记为答案