NSIS-如何动态显示特定的自定义页面?

时间:2009-12-28 12:35:29

标签: dynamic radio-button nsis

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

2 个答案:

答案 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)
  •   
     

此功能还允许InstallOptionsInstallOptionsEx使用其功能,以便您可以选择取代默认NSIS按钮的控件。


注意:this thread提出了一种不同的方法:

  

您应该尝试避免使用RelGotoPage,因为当用户点击后退按钮时,它们仍会显示在页面上。
  相反,如果将某个条件设置为跳过它们,您应该在页面的预函数和自定义页面的Abort函数中调用show

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

请参阅NSIS手册的Callback section

  

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

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

  
      
  • 预功能允许您使用Abort跳过页面。
  •   
  • show-function允许您使用CreateFontSetCtlColorsSendMessage和其他人调整页面的用户界面。
  •   
  • 使用离开功能可以强制用户使用Abort停留在当前页面上。
  •