Llamar a las funciones previas de MUI en el instalador NSIS, saltando páginas/diálogo en el instalador NSIS

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

Pregunta

¿Se puede llamar a la función previa de un diálogo MUI solo cuando sea necesario?

!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS

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

// Esta sección se verificará de forma predeterminada, es decir, el usuario no podrá seleccionar o deseleccionar esta sección, esto debe ejecutarse .......... ¿Cómo hacer esto? Para ocultarlo, yo han incluido un - firma en su nombre. Su nombre es "obligatorio"

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

Tengo dos radiobutton (demostración y actualización) en mi página de diálogo personalizado en el instalador NSIS. Quiero que cuando el usuario elija instalar la actualización (elige la actualización de radiobutton), luego se omite la página de componentes y se revisa y ejecuta una sección especificada.

Pero si el usuario elige instalar el DEM (elige el radiobutton de demostración), entonces la página de componentes no se omite y el usuario puede verificar o desmarcar secciones en esa página de componentes.

¿Fue útil?

Solución

Siempre se llama una devolución de llamada de página, pero puede colocar la lógica dentro de la función:

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

Realmente no está claro para mí si desea que el usuario pueda elegir la actualización en el modo de demostración, pero si desea forzar la actualización, solo puede hacer la lectura de la sección:

section "Update" SEC_UPDATE 
SectionIn RO
sectionend

(Y elimine la llamada de no selección de la función pre)

... o simplemente haga que la sección sea invisible con el prefijo -name como sugirió.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top