Как я могу создать массив констант в сценарии установки 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}\*.*"
!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 лучший синтаксис для достижения этой цели без вырезания и вставки каждый раз, когда мне нужно увеличивать количество поддерживаемых подпапок?


person Mark Heath    schedule 03.10.2008    source источник


Ответы (1)


Вы можете использовать $ {$ {VAR}} для доступа к различным переменным в зависимости от значения другой переменной. например

RMDir /r "$ABCPath\Data\${ABC_SUBFOLDER${FOLDERNUMBER}}"
person Sam Hasler    schedule 03.10.2008
comment
Интересная идея. Он должен будет работать и с оператором! Ifdef, но если я могу поместить его в цикл с увеличивающимся S {FOLDERNUMBER}, тогда это может сделать то, что мне нужно. Попробую и отметим как ответ, если он работает - person Mark Heath; 03.10.2008