NSIS - 另一种为静默模式调用页面回调函数的方法
Posted
技术标签:
【中文标题】NSIS - 另一种为静默模式调用页面回调函数的方法【英文标题】:NSIS - another way to call page call back functions for Silent Mode 【发布时间】:2021-03-23 14:01:52 【问题描述】:在 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
有什么建议吗?
【问题讨论】:
【参考方案1】:您不应该在页面功能中执行所需的操作。
如果您想支持静默安装,则应在.onInit
中将所有必需的设置/变量设置为其默认/首选值,并且应在Section
中执行实际安装步骤。
如果您想忽略我的建议,那么您当然可以在第一部分的第一步中调用函数:
!include LogicLib.nsh
Section
$If $Silent
Call WelcomePagePre
Call ...
$EndIf
SectionEnd
这要求您的页面功能实际上并不需要 UI 存在(这不太可能)。在静默模式下,页面不会被隐藏,它们根本不存在!
【讨论】:
以上是关于NSIS - 另一种为静默模式调用页面回调函数的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何静默自动更新通过 NSIS 为所有用户/每台机器安装的电子应用程序?