一、变量
NSIS脚本使用var关键字定义变量,使用StrCpy命令为变量赋值,下面是一个使用变量的例子
var myVariable
Function .onInit
StrCpy $myVariable "MyVariable"
MessageBox MB_OK $myVariable
FunctionEnd
NSIS脚本中所有的变量都是全局变量,也可以用“/GLOBAL”显式指定变量为全局变量(在callback、Section内声明时则必须用GLOBAL显式指定)
var /GLOBAL myVariable
NSIS脚本中的变量名可以由数字(0-9)、字母(a-z、A-Z)和下划线(_)构成,变量名的长度最多为1024个字符
在NSIS脚本中,有20个预置的变量:
$0,$1,$2,$3,$4,$5,$6,$7,$8,$9,$R0,$R1,$R2,$R3,$R4,$R5,$R6,$R7,$R8,$R9
这些变量和你自己写的变量用法是一样的,但通常用于共享的方法和宏中。这些变量不需要专门去声明,建议使用栈(stack)来存放这些变量的值。这些变量也可被用于插件(plug-in)间的通信,因为它们可被插件DLL文件读写。
另外还有四个变量:
1、$INSTDIR:安装目录
可以用StrCpy、ReadRegStr、ReadINIStr等函数赋值,也可用下面的方法赋值
InstallDir "E:\NSIS_Test\Output"
2、$OUTDIR:当前的输出目录
可以用StrCpy、ReadRegStr、ReadINIStr等函数赋值,也可用下面的方法赋值
SetOutPath "E:\NSIS_Test\Output"
3、$CMDLINE:进入安装包的命令行
如NSIS脚本执行完毕后生成的安装包名为Galatea.exe,在命令行中输入“Galatea.exe -1 -2 -3”打开安装包,则变量$CMDLINE的值就会被赋为“Galatea.exe -1 -2 -3”
4、$LANGUAGE:当前使用的语言
可以在.onInit回调中指定语言,如英语(美国)是1033,简体中文是2052
Windows的语言代码可以查阅MSDN上相关文档:
Regional and language settings (Windows SharePoint Services 2.0)
https://technet.microsoft.com/en-us/library/cc287874%28v=office.12%29.aspx
二、常量
NSIS脚本中有大量系统预定义好的常量可以使用。不过需要注意的是,常量有它的使用范围,一些新加入的常量并不是每个操作系统都能适用。如$CDBURN_AREA只能作用于WinXP及以上版本的Windows操作系统。
1、$PROGRAMFILES、$PROGRAMFILES32、$PROGRAMFILES64 - ProgramFiles目录地址
在安装包运行时动态确定,在Windows(x64)系统中,$PROGRAMFILES会指向“C:\Program Files (x86)”,$PROGRAMFILES64会指向“C:\Program Files”。
我的电脑是32位的Win7操作系统,因此在我的电脑上程序运行时这三个常量的值都为:C:\Program Files
2、$COMMONFILES、$COMMONFILES32、$COMMONFILES64 - CommonFiles目录地址
该目录一般都在ProgramFiles目录下,这个地址的路径会在安装包运行时动态确定,因为前半部分有ProgramFiles目录,所以根据x86、x64系统的