Chiamare funzioni PRE di MUI in installazione NSIS, saltando le pagine / finestre di dialogo nel programma di installazione NSIS
-
27-10-2019 - |
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.
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.