» Переменные NSIS (Variables)

K.A.V.
www.oszone.net
22.02.2010
Автор первой части: K.A.V.
Автор второй части: hb860
Последнее обновление: 22.02.2010

Часть 1: Создание переменных

Синтаксис команды:
Var [/Global] var_name
Где var_name - имя переменной
Имя переменной может содержать символы [a-z][A-Z][0-9] и символ подчеркивания '_'
Если вы прописываете команду создания переменной в секции или в функции, вы обязаны поставить флаг /Global перед именем переменной

Создание переменной вне секций и функций (в начале вашего кода)
Var MyVariableName

Создание переменной в секции или в функции
Var /Global MyVariableName

Затем, в вашем коде переменные используются с таким же именем, но с подставлением знака $
Пример кода, создаём переменную в функции .onInit и назначаем ей значение с помощью команды StrCpy
Function .onInit
    Var /Global MyVariableName
    StrCpy $MyVariableName "Значение переменной"
FunctionEnd
Примечание.
Размер данных в переменных ограничен 1024 символами


Часть 2: Преопределённые переменные


 ${NSISDIR} - системная константа, означает путь к папке, куда установлен сам NSIS.

Предопределенных констант несколько:
$PROGRAMFILES, $PROGRAMFILES32, $PROGRAMFILES64 — папка Program files. В 64разрядной системе констатация $PROGRAMFILES и $PROGRAMFILES32 представляют папку C:\Program Files (x86), а $PROGRAMFILES64 - C:\Program Files.

$COMMONFILES, $COMMONFILES32, $COMMONFILES64 — по аналогии с предыдущей константой, ссылается на C:\Program Files\Common Files.

$DESKTOP — Папка рабочего стола. В современных операционных системах рабочий стол может быть общим (для всех пользователей) или персональным. По умолчанию константа ссылается на персональный рабочий стол текущего пользователя, но её значение можно переопределить командой SetShellVarContext. SetShellVarContext all – папка будет представлять общий рабочий стол, SetShellVarContext current – текущий.

$EXEDIR — папка, откуда запущен инсталятор.

$EXEFILE — имя исполняемого файла инсталятора.

$EXEPATH — полный путь инсталятора, т.е. $EXEDIR+$EXEFILE

$WINDIR — папка, куда установлена операционная система. Как правило, C:\Windows.

$SYSDIR — системная директория Windows. Обычно это C:\Windows\System32.

$TEMP — папка для временных файлов. Например, C:\Windows\Temp

$STARTMENU — папка меню «пуск». Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$SMPROGRAMS – папка «Меню пуск-Программы». Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$SMSTARTUP — Папка в меню пуск с названием «Автозагрузка». Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$QUICKLAUNCH — Папка панели «Быстрый запуск». Если такой папки в системе нет — возвращается путь, равный $TEMP.

$DOCUMENTS — Папка «Мои документы». Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$SENDTO — Папка «Отправить» контекстого меня проводника.

$RECENT — Папка с ярлыками «Недавние документы». Она присутствует в меню пуск

$FAVORITES — Папка «Избранное». Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$MUSIC — Папка «Мои Документы\Моя музыка». Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$PICTURES — Папка «Мои Документы\Мои рисунки». Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$VIDEOS — Папка «Мои Документы\Видео». Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$NETHOOD — Папка с ярлыками на сетевые объекты «Сетевое окружение»

$FONTS — Системная папка со шрифтами (C:\Windows\Fonts).

$TEMPLATES — Системная папка с шаблонами документов. Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$APPDATA — папка с данными учётной записи пользователя (c:\Documents and Settings\Ваше имя\Application Data\ или c:\Documents and Settings\All Users\Application Data\). Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$LOCALAPPDATA – папка c:\Documents and Settings\Ваше имя\Local Settings\Application Data\. Аналогично предыдущей.

$PRINTHOOD — ссылка на папку «Принтеры»

$INTERNET_CACHE — папка с временными файлами приложения Internet Explorer.

$COOKIES — Папка, содержащая файлы-cookies Internet Explorer.

$HISTORY — история посещений Internet Explorer.

$PROFILE — папка, где хранится системный профиль пользователя, например, C:\Documents and Settings\Foo.

$ADMINTOOLS — Папка «Администрирование». Для неё справедливо замечание SetShellVarContext, равно как и для $DESKTOP.

$RESOURCES — Ссылка на папку C:\windows\resources.

$RESOURCES_LOCALIZED — Ссылка на папку локализованных ресурсов Widnows, например, C:\Windows\Resources\1033.

$CDBURN_AREA — папка, где хранятся файлы, ожидающие записи на компакт-диск средствами Windows.

$HWNDPARENT – цифровой идентификатор родительского окна.

$PLUGINSDIR — временная папка (создаётся при запуске инсталлятора), где хранятся плагины NSIS.


Примечание.
Обратите внимание, что под разными версиями Windows определенные константы могут быть недоступны. В Windows 98, к примеру, нет $CDBURN_AREA.