【发布时间】:2015-02-19 01:16:51
【问题描述】:
我有一个使用 Modern UI 2 (MUI 2) 的安装程序,可以将最多三个组件安装到不同的位置。
我使用一个MUI_PAGE_COMPONENTS 页面和多个MUI_PAGE_DIRECTORY 页面,如果未选择相应的部分(如here 所述),则会自动跳过这些页面。
到目前为止一切顺利。
但是,如果没有选择安装三个组件中的最后一个,则上一个(未跳过的)目录页面上的按钮应该是 Install 而不是 Next,因为接下来会跳过最后一个目录页并执行安装。
既然我们已经知道离开组件页面后会跳过哪个页面,不知道有没有办法让它工作?
小例子:
!include MUI2.nsh
InstallDir $EXEDIR
OutFile "skip.exe"
RequestExecutionLevel user
ShowInstDetails show
!insertmacro MUI_PAGE_COMPONENTS
!define MUI_PAGE_CUSTOMFUNCTION_PRE directoryPreA
!insertmacro MUI_PAGE_DIRECTORY
!define MUI_PAGE_CUSTOMFUNCTION_PRE directoryPreB
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Section "A" SEC_A
DetailPrint "Installing A..."
SectionEnd
Section /o "B" SEC_B
DetailPrint "Installing B..."
SectionEnd
Function directoryPreA
# Skips the directory page for A if not chosen for installation.
${Unless} ${SectionIsSelected} ${SEC_A}
Abort
${EndUnless}
FunctionEnd
Function directoryPreB
# Skips the directory page for B if not chosen for installation.
${Unless} ${SectionIsSelected} ${SEC_B}
Abort
${EndUnless}
FunctionEnd
【问题讨论】:
-
所以,我刚刚找到this possible duplicate,这是朝着正确方向迈出的一小步……
标签: nsis