Verwenden des NSIS -Installationsprogramms, Hinzufügen von benutzerdefinierten Radiobuttons, die Abschnitte gemäß dem gewählten Radiobutton aufrufen

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

Frage

enter image description here

Ich möchte, dass wenn keiner der Radiobuttons ausgewählt wird, wenn der nächste Knopf gedrückt wird, sollte es eine Warnung geben, die bitte mindestens ein Element ausgewählt hat, und es sollte nicht zum nächsten Dialog wechseln.

Ich möchte auch, dass wenn der Benutzer die Option auswählt: die vorhandene Software aktualisieren, nur einige Dateien kopiert werden und wenn der andere Radiobutton ausgewählt ist, werden alle Dateien kopiert.

Ist dies möglich, wenn Abschnitte oder Funktionen verwendet werden? Kann ich einen Abschnitt anrufen, z. B. wenn Radiobutton 1 ausgewählt wird, dann wird Abschnitt CreateAllFiles aufgerufen, sonst wird der Abschnitt CreateOnlytwoFiles aufgerufen?

Meiner Meinung nach möchte ich, dass der Code die IDs dieser beiden Radiobuttons hält und sie entsprechend verwendet, um verschiedene Abschnitte oder Funktionen aufzurufen. Was wäre der Code? Bitte helfen Sie?

Nach dem nächsten Drücken auf dieser Seite wird das nächste Dialog wie im Bild unten angezeigt: Ich möchte ein Etikett anzeigen, unabhängig davon Zeigen Sie dieses Etikett an und verbergen Sie sie gemäß der Benutzerauswahl von Radiobuttonenter image description here

War es hilfreich?

Lösung

Sie können Abschnitte auswählen/nicht auswählen oder die Logik in einem einzigen Abschnitt einfügen. Dieses Beispiel macht beides:

!include nsDialogs.nsh
!include Sections.nsh

var InstallType

Section 
#Install common files...
${If} $InstallType == DEMO
    #Do demo specific stuff
${Else}
    #Do update specific stuff
${EndIf}
SectionEnd

Section "" SEC_DEMO
#Install demo..
SectionEnd

Section "" SEC_UPDATE
#Do update..
SectionEnd

Page custom InstTypePageCreate InstTypePageLeave

Function InstTypePageCreate
nsDialogs::Create 1018
pop $0
${NSD_CreateRadioButton} 0 50u 100% 10u "Demo"
pop $1
${IfThen} $InstallType == DEMO ${|} ${NSD_Check} $1 ${|}
${NSD_CreateRadioButton} 0 70u 100% 10u "Update"
pop $2
${IfThen} $InstallType == UPDATE ${|} ${NSD_Check} $2 ${|}
nsDialogs::Show
FunctionEnd

Function InstTypePageLeave
${NSD_GetState} $1 $0
${If} $0 = ${BST_CHECKED}
    StrCpy $InstallType DEMO
    !insertmacro UnselectSection ${SEC_UPDATE}
    !insertmacro SelectSection ${SEC_DEMO}
${Else}
    ${NSD_GetState} $2 $0
    ${If} $0 = ${BST_CHECKED}
        StrCpy $InstallType UPDATE
        !insertmacro UnselectSection ${SEC_DEMO}
        !insertmacro SelectSection ${SEC_UPDATE}
    ${Else}
        MessageBox MB_ICONSTOP "You must select something!"
        Abort
    ${EndIf}
${EndIf}
FunctionEnd

Um den Text auf der nächsten Seite festzulegen, verwenden Sie einfach einfach ${NSD_SetText} $hwndYourLabel "Text" und showWindow in einem IF -Block, der $ installType testet (dieser Code muss im Show -Rückruf der Show (mui_page_customfunction_show) für diese Seite sein)

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