所有的變量都是全局的並且可以用於區段和函數。需要注意的是,在預設情況下變量被限制在 1024 字元。要擴大這個限制你需要重新構建一個使用了更大 NSIS_MAX_STRLEN 值的 NSIS 或使用特別版本。
$變量名
用戶變量可以用 Var 命令來聲明。你可以用這些變量來儲存值,用於字串操作等等。
[/GLOBAL] 變量名
聲明一個用戶變量。變量名允許的字元: [a-z][A-Z][0-9] 和 '_'。所有定義的變量都是全局的,即使在區段或函數內定義。要使它表達更清楚一些,區段或函數內定義的變量必須使用 /GLOBAL 標記。在區段和函數之外不需要 /GLOBAL 標記。
Var example Function testVar Var /GLOBAL example2 StrCpy $example "example value" StrCpy $example2 "another example value" FunctionEnd
$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, $R8, $R9
這些變量可以像用戶變量一樣使用,但常用於公用函數或宏。你不需要聲明這些變量,所以當你在公用代碼裡使用他們的時候不能有任何名字衝突。當在公用代碼裡使用的時候,推薦你使用堆棧儲存和還原他們原來的資料。這些變量也可以在插件裡傳遞,因為他們可以被 DLL 插件讀取和寫入。
$INSTDIR
安裝目錄 ($INSTDIR 可以使用 StrCpy、ReadRegStr、ReadINIStr 等等來更改。例如在 .onInit 函數里可以用來做高級的檢測安裝定位)。
注意在卸載程式代碼裡,$INSTDIR 為卸載程式所在的目錄而不是在安裝程式裡所指定的目錄。例如,你把卸載程式放在 $WINDIR 裡並且用戶沒有移動它,那麼在卸載程式裡 $INSTDIR 就等於 $WINDIR。如果你要把卸載程式放到到另外的位置,那麼你應該先把安裝程式的 $INSTDIR 值寫入註冊表或其它容易儲存的地方,然後在卸載程式裡讀取該值並賦值給卸載程式裡的 $INSTDIR。
$OUTDIR
目前輸出路徑 (通過 SetOutPath 設定或通過 StrCpy、ReadRegStr、ReadINIStr 等等)
$CMDLINE
安裝程式的命令行輸入。命令行的格式如下面之一所示:
$LANGUAGE
目前使用的語言標識符。例如,英語是 1033。你可以在 .onInit 裡更改。
常量通常用在 InstallDir 屬性裡。
需要注意的是一些新的常量並不是在所有的 OS 上都是正常的。例如 $CDBURN_AREA 僅在 Windows XP 及以上系統中才正常。如果在 Windows 98 中使用將會得到空值。除非特別提示,否則該常量都是在所有 OS 上有效的。
$PROGRAMFILES
程式檔案目錄(通常為 C:\Program Files 但是運行時會檢測)。
$COMMONFILES
公用檔案目錄。這是應用程式共享組件的目錄(通常為 C:\Program Files\Common Files 但是運行時會檢測)。
$DESKTOP
Windows 桌面目錄(通常為 C:\windows\desktop 但是運行時會檢測)。該常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
$EXEDIR
安裝程式運行時的位置。(從技術上來說你可以修改改變量,但並不是一個好方法)。
${NSISDIR}
包含 NSIS 安裝目錄的一個標記。在編譯時會檢測到。常用於在你想調用一個在 NSIS 目錄下的資源時,例如:圖檔、介面……
$WINDIR
Windows 目錄(通常為 C:\windows 或 C:\winnt 但在運行時會檢測)
$SYSDIR
Windows 系統目錄(通常為 C:\windows\system 或 C:\winnt\system32 但在運行時會檢測)
$TEMP
系統臨時目錄(通常為 C:\windows\temp 但在運行時會檢測)
$STARTMENU
開始選單目錄(常用於新增一個開始選單項,使用 CreateShortCut)。該常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
$SMPROGRAMS
開始選單程式目錄(當你想定位 $STARTMENU\程式 時可以使用它)。該常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
$SMSTARTUP
開始選單程式/啟動 目錄。該常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
$QUICKLAUNCH
在 IE4 活動桌面及以上的快速啟動目錄。如果快速啟動不可用,僅僅返回和 $TEMP 一樣。
$DOCUMENTS
文件目錄。一個目前用戶典型的路徑形如 C:\Documents and Settings\Foo\My Documents。這個常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
該常量在 Windows 95 且 Internet Explorer 4 沒有安裝時無效。
$SENDTO
該目錄包含了「發送到」選單快捷項。
$RECENT
該目錄包含了指向用戶最近文件的快捷方式。
$FAVORITES
該目錄包含了指向用戶網絡收藏夾、文件等的快捷方式。這個常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
該常量在 Windows 95 且 Internet Explorer 4 沒有安裝時無效。
$MUSIC
用戶的音樂檔案目錄。這個常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
該常量僅在 Windows XP、ME 及以上才有效。
$PICTURES
用戶的圖片目錄。這個常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
該常量僅在 Windows 2000、XP、ME 及以上才有效。
$VIDEOS
用戶的視頻檔案目錄。這個常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
該常量僅在 Windows XP、ME 及以上才有效。
$NETHOOD
該目錄包含了可能存在於我的網絡位置、網上鄰居檔案夾的連結對象。
該常量在 Windows 95 且 Internet Explorer 4 和活動桌面沒有安裝時無效。
$FONTS
系統字型目錄。
$TEMPLATES
文件模板目錄。這個常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
$APPDATA
應用程式資料目錄。目前用戶路徑的檢測需要 Internet Explorer 4 及以上。所有用戶路徑的檢測需要 Internet Explorer 5 及以上。這個常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
該常量在 Windows 95 且 Internet Explorer 4 和活動桌面沒有安裝時無效。
$LOCALAPPDATA
本機應用程式資料目錄。
該常量僅在 Windows 2000 或以上系統有效。.
$PRINTHOOD
該目錄包含了可能存在於列印機檔案夾的連結對象。
該常量在 Windows 95 和 Windows 98 上無效。
$INTERNET_CACHE
Internet Explorer 的臨時檔案目錄。
該常量在 Windows 95 和 Windows NT 且 Internet Explorer 4 和活動桌面沒有安裝時無效。
$COOKIES
Internet Explorer 的 Cookies 目錄。
該常量在 Windows 95 和 Windows NT 且 Internet Explorer 4 和活動桌面沒有安裝時無效。
$HISTORY
Internet Explorer 的歷史記錄目錄。
該常量在 Windows 95 和 Windows NT 且 Internet Explorer 4 和活動桌面沒有安裝時無效。
$PROFILE
用戶的個人配置目錄。一個典型的路徑如 C:\Documents and Settings\Foo。
該常量在 Windows 2000 及以上有效。
$ADMINTOOLS
一個儲存管理工具的目錄。這個常量的內容(所有用戶或目前用戶)取決於 SetShellVarContext 設定。預設為目前用戶。
該常量在 Windows 2000、ME 及以上有效。
$RESOURCES
該資源目錄儲存了主題和其他 Windows 資源(通常為 C:\Windows\Resources 但在運行時會檢測)。
該常量在 Windows XP 及以上有效。
$RESOURCES_LOCALIZED
該本地的資源目錄儲存了主題和其他 Windows 資源(通常為 C:\Windows\Resources\1033 但在運行時會檢測)。
該常量在 Windows XP 及以上有效。
$CDBURN_AREA
一個在燒錄 CD 時儲存檔案的目錄。
該常量在 Windows XP 及以上有效。
$HWNDPARENT
父視窗的十進制視窗句柄。
$PLUGINSDIR
該路徑是一個臨時目錄,當第一次使用一個插件或一個調用 InitPluginsDir 時被建立。該檔案夾當安裝程式登出時會被自動刪除。這個檔案夾的用意是用來儲存給 InstallOptions 使用的 INI 檔案、啟動畫面位圖或其他插件運行需要的檔案。
$$
轉義,用來表示 $。
$\r
用來表示一個Enter(\r)。
$\n
用來表示新的一行(\n)。
$\t
用來表示一個 Tab(\t)。