Использование локальных переменных
Локальные переменные служат для хранения и подстановки строк и чисел в процессе инсталляции программ. Практически все команды инсталлятора работают с локальными переменными. Команды могут записывать и получать значения из указанных переменных. Если команда требует указать в параметре имя переменной, то вы просто указывайте имя из букв английского алфавита, цифр и символа подчеркивания '_'.
myvar1 my_variable MyVar
Если вам нужно подставить значение переменной, то вы должны указать ее имя между символами '#'. Например, если переменная myvar содержит значение Test value, то строка Value = #myvar# будет преобразована в строку Value = Test value. Если значение переменной содержит другие переменные, то они также будет заменены на соответствующие значения. Если указана несуществующая переменная #anyvar#, то данный фрагмент останется без изменений. Рассмотрим пример, пусть у нас имеются следующие переменные с указанными значениями.
mypar1 = Parameter 1 mypar2 = #mypar1# + Additonal parameter mypar3 = Parameters: #mypar1#, #mypar2#, #mypar#
В этом случае #mypar3# будет заменено на следующую строку.
Parameters: Parameter 1, Parameter 1 + Additonal parameter, #mypar#
Как видим #mypar# остался без изменений, так как переменная mypar не определена.
Использование локальных переменных как массивов
Переменные можно рассматривать как массивы строк. Предположим что у нас есть переменная myarr, которая состоит из нескольких строк.
This is a first line. c:\temp\subfolder\myfile.txt param1|Parameter 2|parameter 3
Если мы укажем в скрипте инсталляции #myarr#, то подставятся все три указанные строки. Что делать если нам нужно подставить, только первую или третью строку. Вам достаточно указать имя переменной, точку и номер строки. Нумерация строк начинается с 0. В нашем случае, #myarr.1# возвратит c:\temp\subfolder\myfile.txt. Кроме числового значения можно указывать имя переменной, значение которой равно номеру нужной строки. Если myid равно 0, то #myarr.id# возвратит This is a first line..
Следует заметить, что можно рассматривать значение переменной не как массив строк, а как двумерный массив в котором строки так же разбиваются на подстроки с помощью символа разделителя. Чтобы получить такую подстроку нужно использовать запись следующего вида #varname.idx[delimeter]idy#, где idx - номер строки, [delimeter] - символ разделитель, idy - номер фрагмента в строке с 0. idx и idy могут быть как числом, так и именем переменной. Разделитель может быть любым символом кроме числа или буквы. Приведем результаты, которые будут возращены при следующих обращениях к переменной myarr.
#myarr.0 3# => first #myarr.1\0# => c: #myarr.1\2# => subfolder #myarr.2|subid# => Parameter 2 (if the variable subid equals 1) #myarr.2|0# => param1 #myarr.id1 id2# => line. (if the variable id1 equals 0 and id2 equals 4)