HWH....

导航

 

一、 脚本文件格式

一个 NSIS 脚本文件 (.nsi) 就是一个包含了脚本代码的文本文件。

命令

格式:'命令 [参数]'

例子:File "myfile"

注释

; 注释

# 注释

# 注释 \  

  另一个注释行 (查看本节下面的 `长命令`)

/*注释注释*/

Name /* 注释 */ mysetup

File "我的文件" ; 注释

插件

格式:插件::命令 [参数]'

例子:nsExec::Exec "我的文件"

数字

1.十进制 (数字) 或十六进制 (以 0x 开头的,比如: 0x12345AB), 或八进制 (以 0 开头且无 x)。

2.颜色被设置为十六进制 RGB 形式,像 HTML 那样但是没有 # 开头。

IntCmp 1 0x1 lbl_equal

SetCtlColors $HWND CCCCCC

字符串

1.要使用一个包含空格的字符串,需要用引号括起来:  MessageBox MB_OK "Hi 您好!"

2.引号仅有的作用就是当他们开始时包含一个参数。他们可以是单引号、双引号或向后的单引号。

MessageBox MB_OK "I'll be happy" ; 把一个 ' 放在字符串里

MessageBox MB_OK 'And he said to me "Hi there!"' ; 把一个 " 放在字符串里

MessageBox MB_OK `And he said to me "I'll be happy!"` ; 这里把 ' 和 " 都放到了字符串里

MessageBox MB_OK "$\"A quote from a wise man$\" said the wise man" ; 这里演示了跳过引号的解析

3.要在字符串里使用回车、换行、Tab 等,请使用 $\r, $\n, $\t 等。

变量

变量以 $ 开头。用户变量应该 (不是必须) 事先被声明并且区分大小写。

Var MYVAR

StrCpy $MYVAR "变量值"

长命令

要把命令扩充为多行,需要在行尾使用反斜杠 (\)

配置文件

如果在 NSIS 的配置目录下存在 "nsisconf.nsh" ,那么它里面的代码默认将会被包含在任何脚本里(除非你使用了 /NOCONFIG 命令参数)。(这个里面的一点不明白了,唉,)

二、 变量

所有的变量都是全局的并且可以用于区段和函数。需要注意的是,在默认情况下变量被限制在 1024 字节。要扩大这个限制你需要使用一个更大 NSIS_MAX_STRLEN 值并重新构建NSIS或者使用 特别版本

用户变量

用户变量可以用 Var 命令来声明。你可以使用这些变量来保存值,用于字符串操作等等。

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

 

 

 

其他可写的变量

1.寄存器。这些变量可以像用户变量一样使用,但常用于公用函数或宏。你不需要声明这些变量,所以当你在公用代码里使用他们的时候不能有任何名字冲突。当在公用代码里使用这些变量的时候,推荐你使用堆栈保存和恢复他们原来的数据。这些变量也可以在插件里传递,因为他们可以被 DLL 插件读取和写入。

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

2.安装目录。($INSTDIR 可以使用 StrCpyReadRegStrReadINIStr 等等来更改。例如在 .onInit 函数里可以用来做高级的检测安装定位)。

      $INSTDIR

当前输出目录 。(通过 SetOutPath 或者通过 StrCpyReadRegStrReadINIStr 等等)

$OUTDIR

安装程序命令行。命令行的格式可以是下列之一:

  1.  
    1. "完整路径\安装程序.exe" 参数1 参数2 参数3
    2. 安装程序.exe 参数1 参数2 参数3
    3. 对于解析“参数”部分,参阅下例。如果在命令行里指定了 /D= (用来跳过安装路径的选择),那么 /D= 后面的参数将不会被保存在 $CMDLINE (前面的可以保存)。

Section

  ${GetParameters} $R0; 

  $R0="[parameters]"

SectionEnd

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted on 2010-12-14 17:24  HWH....  阅读(4558)  评论(0编辑  收藏  举报