Pre -Funktionen von MUI im NSIS -Installationsprogramm aufrufen, überspringen Seiten/Dialoge im NSIS -Installationsprogramm

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

Frage

Kann die Vorfunktion eines MUI -Dialogs nur bei Bedarf aufgerufen werden?

!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipComponentsPage
!insertmacro MUI_PAGE_COMPONENTS

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

// Dieser Abschnitt wird standardmäßig überprüft, dh der Benutzer kann diesen Abschnitt nicht auswählen oder nicht ausgewählt werden. Dies muss ausgeführt werden. haben in seinem Namen eine - Anmelden. Sein Name ist "obligatorisch"

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

Ich habe zwei Radiobuttons (Demo & Update) auf meiner benutzerdefinierten Dialogseite im NSIS -Installateur. Ich möchte, dass der Benutzer, wenn der Benutzer das Update installiert (das Update -Radiobutton ausgewählt hat), die Seite der Komponenten übersprungen ist und ein angegebener Abschnitt automatisch überprüft und ausgeführt wird.

Wenn der Benutzer jedoch die DEM installiert (wählt das Demo -Radiobutton), wird die Seite Komponenten nicht übersprungen und der Benutzer kann die Abschnitte auf dieser Komponentenseite überprüfen oder deaktivieren.

War es hilfreich?

Lösung

Ein Seiten -Rückruf wird immer aufgerufen, aber Sie können Logik in die Funktion einfügen:

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

Es ist mir nicht wirklich klar, wenn Sie möchten, dass der Benutzer im Demo -Modus Update auswählen kann. Wenn Sie jedoch das Update erzwingen möchten, können Sie den Abschnitt nur lesen:

section "Update" SEC_UPDATE 
SectionIn RO
sectionend

(Und entfernen Sie den Aufruf von Abdecksektion aus der Pre -Funktion)

... oder machen Sie den Abschnitt einfach unsichtbar mit dem NAME -Präfix, wie Sie es vorgeschlagen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top