注釋
單行注釋用井號"#"或分號";",跨行注釋用可以用c/C++中注釋語法。
數據類型
數字
數字常量可以用十進制、十六進制(0x為前綴)、八進制(0為前綴)表示,顏色用類似html的中RGB表示法,但去井號"#"。
字符串
字符串常量可以用引號引用,轉意字符用"$"作前綴。美元符號、常用轉意字符換行、回車、制表符的nsi語法表示分別為:$$,$n,$r,$t
續行符
nsi腳本用行尾的反斜槓""表示下一行和當前行邏輯上是同一行
默認頭文件
如果在makensis同目錄下有nsisconf.nsh文件,該文件會被自動包含,除非編譯時指定/NOCONFIG選項
標號
nsi使用GOTO語句和IfErrors, MessageBox, IfFileExists及StrCmp進行程序控制流表示,標號是這些語句的目標語句。標號定義的語法:
標號:語句
標號必須定義在函數和區段中,其作用范圍僅限於定義它的區段或函數。以點號"."開頭的標號是全局標號。
相對跳轉
nsi腳本常常使用相對跳轉表示條件分枝,其語法是[+-][1-9],加號表示從當前位置往前跳轉,減號則表示從當前位置往後跳轉。數字表示跳轉的語句條數。示例:
Goto +4
MessageBox MB_OK "The following message will be skipped"
Goto +3
MessageBox MB_OK "You will never ever see this message box"
Goto -3
MessageBox MB_OK "Done"
頁面
向導頁面是NSIS安裝程序中最重要的界面元素,在nsi腳本中可以使用NSIS內置頁面或者定制界面,通過腳本可以指定頁面的順序、顯示樣子和行為。 Page指令用來定義安裝程序中的頁面,UninstPage用來定義,此外PageEx指令提供類是功能,但提供更多選項。頁面的順序和它在nsi腳本中出現的次序一致。
頁面選項
不同的頁面有不同的選項:
License page有LicenseText,LicenseData,LicenseForceSelection;
Components selection頁面有ComponentText;
Directory selection頁面有DirText,DirVar(僅能在PageEx中使用),DirVerify;
Un/Installation log頁面有DetailsButtonText,CompletedText;
Uninstall confirmation頁面有DirVar(僅能在PageEx中使用),UninstallText
對於內置的Page,NSIS支持三個回調函數用於定制界面和驗證,對於自定義頁面NSIS支持兩個回調函數。
Page指令語法
Page license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]
或者:
Page custom [creator_function] [leave_function] [caption]
UninstPage指令語法
UninstPage custom [creator_function] [leave_function] [caption]
OR
UninstPage (license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]
PageEx語法
常用的nsi指令
nsi大致可以分為基本指令、注冊表及ini操作指令、通用指令、流程控制指令、文件操作指令、卸載指令、字符串處理指令、多語言支持指令、重啟指令。
以下是常用的基本指令:
Delete
Delete [/REBOOTOK] file
Exec
Exec command
ExecShell
ExecShell action command [parameters] [SW_SHOWNORMAL | SW_SHOWMAXIMIZED | SW_SHOWMINIMIZED | SW_HIDE]ExecShell "open" 示例"http://XIAZAIBA.COM/"
ExecWait
ExecWait command [user_var(exit code)]