3

我的第一页包含 2 个单选按钮:1 个用于安装,其他用于升级。根据用户的选择,我必须显示用于安装或升级的自定义页面。我怎样才能做到这一点?

4

2 回答 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)

此功能还允许InstallOptionsInstallOptionsEx使用其功能,因此您可以选择哪些控件将代替默认的 NSIS 按钮。


注意:这个线程提出了一种不同的方法:

您应该尽量避免使用RelGotoPage,因为当用户单击后退按钮时,他们仍会显示该页面。
相反,您应该做的是调用Abort页面的前置函数和自定义页面的show函数,如果某个条件设置为跳过它们。

因此,通过根据您的按钮设置适当的变量,您可以跳过不想显示的页面,并在相关页面处停止。

请参阅 NSIS 手册的回调部分

每个内置页面都有三个回调函数:pre-function、show-creation function和leave-function。

  • 在页面创建之前调用 pre-function,
  • show-function 在它创建之后和显示之前被调用
  • 在用户按下下一个按钮之后和离开页面之前立即调用离开函数。

和:

  • 前置功能允许您使用 Abort 跳过页面。
  • CreateFontshow-function 允许您使用、SetCtlColors等来调整页面的用户界面SendMessage
  • leave-function 允许您使用 Abort 强制用户停留在当前页面上。
于 2009-12-28T12:47:42.447 回答