Ray Hayes
Ray Hayes

Reputation: 15015

Conditional Display of pages in NSIS using nsDialog

I have added a custom page to my installer created using nsDialogs, however, the page is only necessary to be displayed to one of my InstType options.

InstType "Default" # 1
InstType "Developer" # 2

In the example above, I'd like the extra page to be shown to only developers. What is the best practice?

  1. Inspect some attribute to determine the install type and suppress call to nsDialogs::Show? No idea what attribute to look for
  2. Some logic in the page routing that avoids the page being hit? No idea how to do this
  3. Something else?

Upvotes: 1

Views: 3889

Answers (1)

Anders
Anders

Reputation: 101756

To skip a page, call abort in the create function callback for that page.

!include LogicLib.nsh

InstType "Normal"
InstType "Developer"

Page Components
Page Custom myDevPage
;Page start menu etc...
Page InstFiles

Section /o "" ${SEC_Dev}
;This (hidden) section is used just to check the insttype state, but you could also use it to install dev specific files etc
SectionIn 2
Sectionend

Function myDevPage
${IfNot} ${SectionIsSelected} ${SEC_Dev}
    Abort
${EndIf}
;nsDialog code goes here
FunctionEnd

Upvotes: 4

Related Questions