Chiamare funzioni PRE di MUI in installazione NSIS, saltando le pagine / finestre di dialogo nel programma di installazione NSIS

StackOverflow https://stackoverflow.com/questions/5828879

Domanda

funzione può PRE di una finestra di dialogo MUI essere chiamato solo in caso di necessità?

!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS

Function SkipComponentsPage
 Abort
MessageBox MB_OK "You chose to UPDATE your current version"
FunctionEnd

// Questa sezione verrà selezionata per impostazione predefinita, che è, l'utente non sarà in grado di selezionare o deselezionare questa sezione, questo deve essere eseguito .......... come fare questo? Per nascondere si, ho incluso un segno - nel suo nome. il suo nome è "obbligatorio"

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

Ho due RadioButtons (Demo e aggiornamento) sulla mia finestra pagina personalizzata nel programma di installazione NSIS. Voglio che quando i choses utente per installare l'aggiornamento (UPDATE choses il RadioButton), allora la componenti Page viene saltata, e una sezione specifica è Auto verificati ed eseguiti.

Ma se i choses degli utenti di installare il DEM (choses la DEMO RadioButton), allora la pagina Componenti non è saltato e l'utente può selezionare o deselezionare le sezioni in quella pagina dei componenti.

È stato utile?

Soluzione

Una pagina di callback è sempre chiamato, ma si può mettere la logica all'interno della funzione:

...
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

Non è molto chiaro a me se si desidera che l'utente sia in grado di scegliere l'aggiornamento in modalità demo, ma se si vuole forzare l'aggiornamento è possibile effettuare la sezione di sola lettura:

section "Update" SEC_UPDATE 
SectionIn RO
sectionend

(E rimuovere la chiamata UnSelectSection dalla funzione pre)

... o semplicemente fare la sezione invisibile con il prefisso di -name come da te suggerito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top