【发布时间】:2009-12-29 02:19:29
【问题描述】:
我的第一个页面包含 2 个单选按钮:1 个用于安装,另一个用于升级。根据用户选择,我必须显示用于安装或升级的自定义页面。我该怎么做?
【问题讨论】:
-
刚刚添加了另一种方法,没有使用
RelGotoPage函数。
标签: dynamic radio-button nsis
我的第一个页面包含 2 个单选按钮:1 个用于安装,另一个用于升级。根据用户选择,我必须显示用于安装或升级的自定义页面。我该怎么做?
【问题讨论】:
RelGotoPage函数。
标签: dynamic radio-button nsis
如果您在自定义页面的创建函数回调中调用abort,该页面将被跳过:
Function MyPage
${If} $somevar == "something"
Abort
${EndIf}
;Show page with nsDialogs or InstallOptions here...
FunctionEnd
page custom MyPage
【讨论】:
我还没有直接测试它(我很快就会测试,因为我的 onw NSIS 脚本将需要该功能),但也许 the function RelGotoPage 可以满足您的需求。
该函数使NSIS相对于当前页面跳转到指定页面。
仅用于:
- 正常功能,
- “
.onUserAbort”回调函数(无 MUI)或!define MUI_CUSTOMFUNCTION_ABORT“函数”(带 MUI)此功能还允许
InstallOptions和InstallOptionsEx使用其功能,因此您可以选择哪些控件将代替默认的 NSIS 按钮。
注意:this thread 建议使用不同的方法:
您应该尽量避免使用
RelGotoPage,因为当用户单击返回按钮时,他们仍会看到该页面。
相反,您应该做的是在页面的前置函数和自定义页面的show函数中调用Abort,如果某个条件设置为跳过它们。
因此,通过根据您的按钮设置适当的变量,您可以跳过不想显示的页面,并在相关页面停止。
参见 NSIS 手册的Callback section:
每个内置页面都有三个回调函数:pre-function、show-creation function和leave-function。
- 在页面创建之前调用前置函数,
- show-function 在它被创建之后和显示之前被调用
- 离开函数在用户按下下一个按钮之后和页面离开之前被调用。
还有:
- 前置功能允许您使用 Abort 跳过页面。
- 显示功能允许您使用
CreateFont、SetCtlColors、SendMessage等调整页面的用户界面。- 离开功能允许您使用 Abort 强制用户停留在当前页面上。
【讨论】: