当前位置: 首页 > 文档资料 > NSIS 用户手册 >

5.2 预定义

优质
小牛编辑
141浏览
2023-12-01

你可以使用这些标准预定义自动向开发版本的标题添加构建时间,以及向版本号添加日期,等等。

5.2.1 ${__COUNTER__}

扩展到一个数字 (每次使用时都从0开始,并且递增1)

5.2.2 ${__FILE__}

当前脚本名称。

5.2.3 ${__FILEDIR__}

当前脚本目录。

5.2.4 ${__LINE__}

当前行数。

5.2.5 ${__DATE__}

当脚本开始编译时当前时区的日期。

5.2.6 ${__TIME__}

当脚本开始编译时当前时区的时间。

5.2.7 ${__TIMESTAMP__}

当脚本开始编译时脚本的修改时间戳。

5.2.8 ${NSIS_VERSION}

编译脚本所使用的 NSIS 版本。

5.2.9 ${NSIS_PACKEDVERSION}

NSIS版本,一个32位的数字。

!if 0x2046000 >= ${NSIS_PACKEDVERSION}
  !error "NSIS 2.47 或者更高的版本才能构建这个安装程序!"
!endif

5.2.10 ${U+1}...${U+10FFFF}

一个Unicode(UCS-4)字符。

!define U+ABC "SIS" # Define will override
DetailPrint "${U+2115}${U+ABC}" # DOUBLE-STRUCK CAPITAL N + "SIS"

5.2.11 范围预定义

包含当前代码范围信息的标准预定义。

5.2.7.1 ${__GLOBAL__}

在全局范围内定义。

Section test
  !ifdef ${__GLOBAL__}
    !error "这不应该在这里!"
  !endif
SectionEnd
Function test
  !ifdef ${__GLOBAL__}
    !error "这不应该在这里!"
  !endif
FunctionEnd
PageEx instfiles
  !ifdef ${__GLOBAL__}
    !error "这不应该在这里!"
  !endif
PageExEnd

5.2.11.2 ${__SECTION__}

区段范围内,被定义为没有任何前缀的区段名。

!ifdef __SECTION__
  !error "这不应该在这里!"
!endif
Section test
  !ifndef __SECTION__
    !error "缺少预定义!"
  !endif
  !if ${__SECTION__} != test
    !error "错误的预定义值!"
  !endif
SectionEnd
Section !test
  !if ${__SECTION__} != test
    !error "错误的预定义值!"
  !endif
SectionEnd
Section un.test
  !if ${__SECTION__} != test
    !error "错误的预定义值!"
  !endif
SectionEnd

5.2.11.3 ${__FUNCTION__}

函数范围内,被定义为没有任何前缀的函数名。

!ifdef __FUNCTION__
  !error "这不应该在这里!"
!endif
Function test
  !ifndef __FUNCTION__
    !error "缺少预定义!"
  !endif
  !if ${__FUNCTION__} != test
    !error "错误的预定义值!"
  !endif
FunctionEnd
Function un.test
  !if ${__FUNCTION__} != test
    !error "错误的预定义值!"
  !endif
FunctionEnd

5.2.11.4 ${__PAGEEX__}

PageEx 范围内,被定义为页面类型。

!ifdef __PAGEEX__
  !error "这不应该在这里!"
!endif
PageEx instfiles
  !ifndef __PAGEEX__
    !error "缺少预定义!"
  !endif
  !if ${__PAGEEX__} != instfiles
    !error "错误的页面类型!"
  !endif
PageExEnd

5.2.11.5 ${__UNINSTALL__}

卸载程序中被定义为区段函数PageEx 范围。

!ifdef __UNINSTALL__
  !error "这不应该在这里!"
!endif
Function test
  !ifdef __UNINSTALL__
    !error "这不应该在这里!"
  !endif
FunctionEnd
Function un.test
  !ifndef __UNINSTALL__
    !error "这不应该在这里!"
  !endif
FunctionEnd

5.2.11.6 ${__MACRO__}

定义为当前宏的名称。