上一頁 | 目錄 | 下一頁

4.2 變量

所有的變量都是全局的並且可以用於區段和函數。需要注意的是,在預設情況下變量被限制在 1024 字元。要擴大這個限制你需要重新構建一個使用了更大 NSIS_MAX_STRLEN 值的 NSIS 或使用特別版本

4.2.1 用戶變量

$變量名

用戶變量可以用 Var 命令來聲明。你可以用這些變量來儲存值,用於字串操作等等。

4.2.1.1 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

4.2.2 其他已登記的變量

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $R0, $R1, $R2, $R3, $R4, $R5, $R6, $R7, $R8, $R9

這些變量可以像用戶變量一樣使用,但常用於公用函數或宏。你不需要聲明這些變量,所以當你在公用代碼裡使用他們的時候不能有任何名字衝突。當在公用代碼裡使用的時候,推薦你使用堆棧儲存和還原他們原來的資料。這些變量也可以在插件裡傳遞,因為他們可以被 DLL 插件讀取和寫入。

$INSTDIR

安裝目錄 ($INSTDIR 可以使用 StrCpyReadRegStrReadINIStr 等等來更改。例如在 .onInit 函數里可以用來做高級的檢測安裝定位)。

注意在卸載程式代碼裡,$INSTDIR 為卸載程式所在的目錄而不是在安裝程式裡所指定的目錄。例如,你把卸載程式放在 $WINDIR 裡並且用戶沒有移動它,那麼在卸載程式裡 $INSTDIR 就等於 $WINDIR。如果你要把卸載程式放到到另外的位置,那麼你應該先把安裝程式的 $INSTDIR 值寫入註冊表或其它容易儲存的地方,然後在卸載程式裡讀取該值並賦值給卸載程式裡的 $INSTDIR。

$OUTDIR

目前輸出路徑 (通過 SetOutPath 設定或通過 StrCpyReadRegStrReadINIStr 等等)

$CMDLINE

安裝程式的命令行輸入。命令行的格式如下面之一所示:

$LANGUAGE

目前使用的語言標識符。例如,英語是 1033。你可以在 .onInit 裡更改。

4.2.3 常量

常量通常用在 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 檔案、啟動畫面位圖或其他插件運行需要的檔案。

4.2.4 在字串裡使用常量

$$

轉義,用來表示 $。

$\r

用來表示一個Enter(\r)。

$\n

用來表示新的一行(\n)。

$\t

用來表示一個 Tab(\t)。

上一頁 | 目錄 | 下一頁