之前,轻狂曾经写过一篇文章介绍“使用SectionSetFlags根据不同环境自动勾选特定区段”的文章,如果我们想更进一步,直接让不符合条件的区段隐藏该怎么做呢?我们来试一下。这里需要用到SectionSetText,NSIS手册中对SectionSetText有如下说明:
设置 "区段索引" 区段的描述。如果文本设为 "" 则该区段将会隐藏。
好,我们要的就是这个“隐藏”!
代码如下:
;NSIS:使用SectionSetText隐藏不想显示的区段
;作者:少轻狂
;支持:www.flighty.cn
Name "隐藏区段"
Caption "$(^Name)"
OutFile "隐藏区段.exe"
XPStyle on
!include "MUI2.nsh"
RequestExecutionLevel admin
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "SimpChinese"
Section /o "少轻狂" test_section_1
MessageBox MB_OK "1"
SectionEnd
Section /o "轻狂志" test_section_2
MessageBox MB_OK "2"
SectionEnd
Function .onInit
SectionSetFlags ${test_section_1} 1 ;勾选“少轻狂”区段
SectionSetText ${test_section_2} "" ;隐藏“轻狂志”区段
FunctionEnd
|
在.onInit中我们可以做一些复杂一点的判断,进而设置区段的勾选、隐藏,这样就实现了一个安装包适应不同环境的目的啦!有什么创意,大家尽情发挥呵。