2013-08-18 2 views
3

Можно ли включить файл, указав его с переменной? Я имею в видуКак использовать переменную в NSIS include /, чтобы получить другую переменную

StrCpy $1 "bla.nsh" 
!include $1 

?

или возможно получать значение переменной с именем другой переменной, например, как:

StrCpy $1 "EN" 
StrCpy $2 ${LANG_${1}_WELCOME_MESSAGE} 

?

Спасибо.

ответ

3

Собственно, Anders справа. Подумайте об этом, когда компилятор компилирует ваш код, ему нужно знать, какие файлы он должен включать в ваш EXE-файл.

Об этой переменной вы можете использовать только с определениями. опять же, потому что, когда вы компилируете, компилятор будет скомпилировать все необходимые (в использовании) переменные/определяет, и вы не можете сказать ему, что он использовал тот, который никогда не был объявлен .. его немного отличается от серверных языков, потому что здесь вы компилируете и упакуйте свой код в EXE-файл, который собирается на вашем компьютере.

2

Переменные могут быть использованы только во время выполнения (работает на машине конечных пользователей), вам нужно использовать устанавливает:

!define foo "bar" 
!include "${foo}.nsh" 

Edit:

Вы должны использовать LangString инструкцию, если вы хотите чтобы добавить пользовательские переведенные строки, вы можете получить доступ к langstring во время выполнения с $(mystringid).

+0

Получил это, но как насчет моего второго вопроса? как я могу использовать вызов переменной с переменной-in-variable (второй код, который я дал) – user2269104

+0

StrCpy $ 2 «foo $ 1 bar» – Anders

+0

Вы меня не получили. Я имею в виду, если $ 1 содержит для ex. «EN», и у меня есть определение под названием «LANG_EN_WELCOME», как я могу получить определение с помощью $ 1? я имею в виду что-то вроде $ {LANG _ $ {1} _WELCOME}, но оно не работает для меня. – user2269104