NSIS脚本学习:NSIS编译程序中默认的变量与常量

一、变量

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系统的不同也被分为了三个常量。

我的电脑上程序运行时这三个常量的值都为:C:\Program Files\Common Files

3、$DESKTOP - Windows桌面地址

这个常量的上下文依赖于SetShellVarContext命令的设置,默认值为当前用户(即程序安装到当前

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值