开发者

Calling PRE functions of MUI in NSIS installer, skipping pages/dialogs in NSIS installer

开发者 https://www.devze.com 2023-03-01 06:39 出处:网络
Can PRE function of a MUI dialog be called only when required? !define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage

Can PRE function of a MUI dialog be called only when required?

!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS

Function SkipComponentsPage
 Abort
MessageBox MB_OK "You chose to UPD开发者_开发百科ATE your current version"
FunctionEnd

//This section will be checked by default, that is , user will not be able to select or unselect this section , this has to be executed..........how to do this?To hide it , i have included a - sign in its name. its name is "mandatory"

Section "-mandatory" SEC_UPDATE
    #Do update............
SectionEnd

I have two RadioButtons (Demo & Update) on my custom dialog page in the NSIS installer. I want that when the user choses to install the UPDATE (choses the UPDATE RadioButton), then the Components Page is skipped , and a specified Section is auto CHECKED and executed.

But if the user choses to install the DEM (choses the DEMO RadioButton) , then the Components page is not skipped & the user can Check or Uncheck Sections on that Component page.


A page callback is always called, but you can put logic inside the function:

...
section "" SEC_UPDATE 
sectionend

Function SkipComponentsPage
!insertmacro UnSelectSection ${SEC_UPDATE} ; Don't include update with demo by default?
${If} $InstallType == UPDATE
    !insertmacro SelectSection ${SEC_UPDATE}
    Abort
${EndIf}
Functionend

It is not really clear to me if you want the user to be able to choose update in the demo mode, but if you want to force the update you can make the section read only:

section "Update" SEC_UPDATE 
SectionIn RO
sectionend

(And remove the UnSelectSection call from the pre function)

...or just make the section invisible with the -name prefix like you suggested.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号