之前,轻狂曾经写过一篇文章介绍“使用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中我们可以做一些复杂一点的判断,进而设置区段的勾选、隐藏,这样就实现了一个安装包适应不同环境的目的啦!有什么创意,大家尽情发挥呵。