NSIS - 另一种为静默模式调用页面回调函数的方法

问题描述

在 NSIS 的静模式安装期间,是否有其他方法可以调用页面自定义函数

我对每个页面都有一些函数,那么如何在静模式下依次调用这些函数

我们有这样的东西,

!define MUI_PAGE_CUSTOMFUNCTION_PRE WelcomePagePre 
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE WelcomePageLeave 
!define MUI_PAGE_CUSTOMFUNCTION_PRE DirectoryPagePre 
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE DirectoryPageLeave 
!define MUI_PAGE_CUSTOMFUNCTION_PRE InstFilesPre 
!define MUI_PAGE_CUSTOMFUNCTION_SHOW InstFilesShow 
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE InstFilesLeave 
!define MUI_CUSTOMFUNCTION_ABORT onUserAbort

有什么建议吗?

解决方法

您不应该在页面功能中执行所需的操作。

如果您想支持静默安装,那么您应该在 .onInit 中将所有必需的设置/变量设置为其默认/首选值,并且实际安装步骤应该在 Section 中执行。

如果你想忽略我的建议,那么你当然可以在第一部分的第一步中调用函数:

!include LogicLib.nsh
Section
${If} ${Silent}
Call WelcomePagePre 
Call ...
${EndIf}
SectionEnd

这要求您的页面功能实际上不需要存在 UI(这不太可能)。在静默模式下,页面不会隐藏,它们根本不存在!