我的第一页包含2个单选按钮:1表示安装,其他表示升级。根据用户选择,我必须显示安装或升级的自定义页面。我怎么能这样做?
答案 0 :(得分:2)
如果您在自定义页面的create function callback中调用abort
,则会跳过该页面:
Function MyPage
${If} $somevar == "something"
Abort
${EndIf}
;Show page with nsDialogs or InstallOptions here...
FunctionEnd
page custom MyPage
答案 1 :(得分:1)
我没有直接测试过(我会很快,因为我的onw NSIS脚本需要该功能),但也许the function RelGotoPage
可以做你需要的。
此功能使NSIS相对于当前页面转到指定页面 仅在以下情况下使用:
- 正常功能,
- “
.onUserAbort
”回调函数(没有MUI)或!define MUI_CUSTOMFUNCTION_ABORT
“功能”(带MUI)此功能还允许
InstallOptions
和InstallOptionsEx
使用其功能,以便您可以选择取代默认NSIS按钮的控件。
注意:this thread提出了一种不同的方法:
您应该尝试避免使用
RelGotoPage
,因为当用户点击后退按钮时,它们仍会显示在页面上。
相反,如果将某个条件设置为跳过它们,您应该在页面的预函数和自定义页面的Abort
函数中调用show
。
因此,根据您的按钮设置适当的变量,您可以跳过您不想显示的页面,并在相关页面停止。
请参阅NSIS手册的Callback section:
每个内置页面都有三个回调函数:前置函数,show-creation函数和leave-function。
- 在创建页面之前调用前置函数
- show-function在创建之后及显示之前立即调用
- 在用户按下下一个按钮之后和页面离开之前立即调用leave-function。
和
- 预功能允许您使用Abort跳过页面。
- show-function允许您使用
CreateFont
,SetCtlColors
,SendMessage
和其他人调整页面的用户界面。- 使用离开功能可以强制用户使用Abort停留在当前页面上。