Erik Pilsits написал хедер
GetFolderPath.nsh, который позволяет получить путь к предопределённой папке в ОС
Используются функции
SHGetFolderPath (для WinXP) и
SHGetKnownFolderPath (для Vista и выше) и ряд констант и ID для папок.
С этими функциями можно конечно получать пути и обычным образом. Например, для COMMON_APPDATA :
Код:
OutFile "GetFolderPath-test.exe"
!define CSIDL_COMMON_APPDATA "0x0023"
Section
System::Call "shell32::SHGetFolderPath(0, i ${CSIDL_COMMON_APPDATA}, 0, 0, t .r1)"
MessageBox MB_OK "$1"
SectionEnd
Но
GetFolderPath.nsh более универсален и чуть упрощает код.
Для XP получение пути интереса не представляет, т.к. практически все переменные предопределённых папок, уже есть в самом NSIS. Разве что, как альтернатива получения пути. А вот для Win7 и 8, где большое разнообразие специализированных папок, может пригодиться.
Вот комплект-пример :