变量定义:var关键字来定义变量,使用$来引用变量;变量是全局的并且是大小写敏感的。
1、系统常用变量
变量 | $INSTDIR | $PROGRAMFILES | $COMMONFILES | $DESKTOP | $EXEDIR | ${NSISDIR} | $WINDIR |
---|---|---|---|---|---|---|---|
含义 | 用户定义的解压路径 | 程序文件目录 | 公用文件目录 | Windows 桌面目录默认为当前用户 | 安装程序运行时的位置。 | 包含 NSIS 安装目录的一个标记。…… | Windows 目录 |
默认目录 | C:\Program Files | C:\Program Files\Common Files | C:\windows\desktop | 常用于在你想调用一个在 NSIS 目录下的资源时,例如:图标、界面 | C:\windows 或 C:\winnt |
||
运行时检测,适用OS | 是 | 是 | 是 | 是 | 是 | ||
变量 | $SYSDIR | $TEMP | $STARTMENU | $SMPROGRAMS | $SMSTARTUP | $QUICKLAUNCH | $DOCUMENTS |
含义 | Windows 系统目录 | 系统临时目录 | 开始菜单目录 | 开始菜单程序目录 | 开始菜单程序/启动 目录 | 文档目录 | |
默认目录 | C:\windows\system 或 C:\winnt\system32 |
C:\windows\temp | 取决于 SetShellVarContext 设置。 默认为当前用户 |
同左 | 同左 | C:\Documents and Settings\Foo\My Documents | |
运行时检测,适用OS | 是 | 是 | 在 IE4 活动桌面及以上的快速启动目录 | Windows 95 且 Internet Explorer 4 没有安装时无效。 | |||
变量 | $SENDTO | $RECENT | $FAVORITES | $MUSIC | $PICTURES | $VIDEOS | $NETHOOD |
含义 | 该目录包含了“发送到”菜单快捷项 | 该目录包含了指向用户最近文档的快捷方式 | 该目录包含了指向用户网络收藏夹、文档等的快捷方式。 | 用户的音乐文件目录 | 用户的图片目录 | 用户的视频文件目录 | 该目录包含了可能存在于我的网络位置、网上邻居文件夹的链接对象 |
默认目录 | 同上 | 同左 | 同左 | 同左 | |||
运行时检测,适用OS | 该常量在 Windows 95 且 Internet Explorer 4 没有安装时无效 | 仅在 Windows XP、ME 及以上才有效。 | 仅在 Windows 2000、XP、ME 及以上才有效。 | 该常量仅在 Windows XP、ME 及以上才有效。 | 在 Windows 95 且 Internet Explorer 4 和活动桌面没有安装时无效 | ||
变量 | $FONTS | $TEMPLATES | $APPDATA | $PRINTHOOD | $INTERNET_CACHE | $COOKIES | $HISTORY |
含义 | 系统字体目录 | 文档模板目录 | 应用程序数据目录 | 该目录包含了可能存在于打印机文件夹的链接对象 | Internet Explorer 的临时文件目录。 | Interne tExplorer 的 Cookies 目录。 |
Internet Explorer 的历史记录目录 |
默认目录 | 这个常量的内容(所有用户或当前用户)取决于 SetShellVarContext设置。默认为当前用户 | 同左 | |||||
运行时检测,适用OS | 在 Windows 95 且 Internet Explorer 4 和活动桌面没有安装时无效 | 在 Windows 95 和 Windows 98 上无效。 | 在 Windows 95 和 Windows NT 且 Internet Explorer 4 和活动桌面没有安装时无效。 | 在 Windows 95 和 Windows NT 且 Internet Explorer 4 和活动桌面没有安装时无效 | 量在 Windows 95 和 Windows NT 且 Internet Explorer 4 和活动桌面没有安装时无效 | ||
变量 | $PROFILE | $ADMINTOOLS | $RESOURCES | $RESOURCES_LOCALIZED | $CDBURN_AREA | $HWNDPARENT | $PLUGINSDIR |
含义 | 用户的个人配置目录 | 一个保存管理工具的目录 | 该资源目录保存了主题和其他 Windows 资源 | 该本地的资源目录保存了主题和其他 Windows 资源 | 一个在烧录 CD 时储存文件的目录 | 父窗口的十进制 HWND。 | 保存给InstallOptions 使用的 INI 文件、启动画面位图或其他插件运行需要的文件 |
默认目录 | C:\Documents and Settings\Foo | 这个常量的内容(所有用户或当前用户)取决于SetShellVarContext 设置。默认为当前用户 | C:\Windows\Resources | C:\Windows\Resources\1033 | |||
运行时检测,适用OS | 在 Windows 2000 及以上有效。 | 该常量在 Windows 2000、ME 及以上有效 | 是;该常量在 Windows XP 及以上有效 | 是;在 Windows XP 及以上有效。 | 在 Windows XP 及以上有效。 |
注:运行时检测.,,没有是默认为否,
适用OS未田表示,默认all;
对于这些变量:明白表达的是什么意思,所指定的目录是哪个就可以了其余的可以忽略。
附:
“这个常量的内容(所有用户或当前用户)取决于SetShellVarContext 设置。默认为当前用户”
看下贾老师的回答 :
NSIS 中部分变量可以通过一个环境设置命令 SetShellVarContext 来设置:
# 设置为当前用户
SetShellVarContext current
# 此时 $DESKTOP 指向 C:\Users\Administrator\Desktop
# 设置为所有用户
SetShellVarContext all
# 此时 $DESKTOP 指向 C:\Users\Public\Desktop
SetShellVarContext 会影响到如 $DESKTOP、$DOCUMENTS、$SMPROGRAMS、$APPDATA 等很多变量的值
(怎么设置先不管,先继续学习)
2、其他常用的系统变量
$ 0,$ 1,$ 2,$ 3,$ 4,$ 5,$ 6,$ 7,$ 8,$ 9,$ R0,$ R1,$ R2,$ R3,$ R4,$ R5,$ R6,$ R7,$ R8,$ R9 寄存器。
这些变量可以像用户变量一样使用,但通常用于共享函数或宏。您不必声明这些变量,因此在共享代码中使用它们时不会出现任何名称冲突。在共享代码中使用这些变量时,建议您使用堆栈来保存和恢复其原始值。这些变量也可用于与插件进行通信,因为它们可以由插件DLL读取和写入
3、自定义变量
[/ GLOBAL] var_name
var variableName
参考文章: