在部分内打开自定义页面?

时间:2012-02-15 05:06:01

标签: nsis

我正在整理我的第一个NSIS安装程序脚本,但遇到了一些麻烦。

我正在使用Modern UI并在下面提供了简化的脚本:

!insertmacro MUI_PAGE_COMPONENTS
Page custom CustomPage

Section "Tomcat" SEC01  
;stuff in here to install Tomcat from bundled installer  
SectionEnd

Section "Deploy WARS" SEC02  
;Fire a separate custom page so that I can use nsDialog to get
;user to choose a folder location for deploying WARs.
;(as potentially their could be more than one Tomcat installed) 
SectionEnd

根据我的阅读,您无法从某个部分中触发自定义页面 那么如何维护MUI_PAGE_COMPONENTS页面以允许用户选择是否要安装Tomcat和/或部署WAR。

我需要一个自定义页面吗?

1 个答案:

答案 0 :(得分:2)

您可以拥有多个instfiles页面,因此您可以拥有此页面顺序的安装程序:

  1. 部件
  2. InstFiles(安装Tomcat)
  3. 目录(选择WAR目的地)
  4. InstFiles(安装WAR)
  5. Section "Tomcat" SECTOM
    SectionEnd
    Section /o "WAR" SECWAR
    SectionEnd
    Section
    ;Use macros from sections.nsh to deselect SECTOM and select SECWAR
    SectionEnd
    

    第3页和第4页的预回调函数需要使用sections.nsh中的SectionFlagIsSet,如果未选择War组件则调用Abort,以便跳过页面。


    另一种方法是尝试DlgHost插件并在instfiles页面的子窗口中显示自定义对话框...