我的第一页包含 2 个单选按钮:1 个用于安装,其他用于升级。根据用户的选择,我必须显示用于安装或升级的自定义页面。我怎样才能做到这一点?
问问题
5205 次
2 回答
2
如果您abort
为自定义页面调用 create 函数回调,该页面将被跳过:
Function MyPage
${If} $somevar == "something"
Abort
${EndIf}
;Show page with nsDialogs or InstallOptions here...
FunctionEnd
page custom MyPage
于 2009-12-28T18:19:29.113 回答
1
我没有直接测试它(我很快就会测试,因为我的 onw NSIS 脚本将需要该功能),但也许该功能RelGotoPage
可以满足您的需求。
该功能使 NSIS 相对于当前页面跳转到指定页面。
仅在以下情况下使用它:
- 正常功能,
- "
.onUserAbort
" 回调函数 (w/o MUI) 或- “
!define MUI_CUSTOMFUNCTION_ABORT
功能”(带 MUI)此功能还允许
InstallOptions
并InstallOptionsEx
使用其功能,因此您可以选择哪些控件将代替默认的 NSIS 按钮。
注意:这个线程提出了一种不同的方法:
您应该尽量避免使用
RelGotoPage
,因为当用户单击后退按钮时,他们仍会显示该页面。
相反,您应该做的是调用Abort
页面的前置函数和自定义页面的show
函数,如果某个条件设置为跳过它们。
因此,通过根据您的按钮设置适当的变量,您可以跳过不想显示的页面,并在相关页面处停止。
请参阅 NSIS 手册的回调部分:
每个内置页面都有三个回调函数:pre-function、show-creation function和leave-function。
- 在页面创建之前调用 pre-function,
- show-function 在它创建之后和显示之前被调用
- 在用户按下下一个按钮之后和离开页面之前立即调用离开函数。
和:
- 前置功能允许您使用 Abort 跳过页面。
CreateFont
show-function 允许您使用、SetCtlColors
等来调整页面的用户界面SendMessage
。- leave-function 允许您使用 Abort 强制用户停留在当前页面上。
于 2009-12-28T12:47:42.447 回答