Pre -Funktionen von MUI im NSIS -Installationsprogramm aufrufen, überspringen Seiten/Dialoge im NSIS -Installationsprogramm
-
27-10-2019 - |
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.
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.