à l'aide d'installation de nsis, en ajoutant radiobuttons personnalisés, appelant sections selon la radiobutton choisi

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

Question

entrer image description ici

Je veux que si aucun des RadioButtons sont sélectionnés, puis, lorsque le bouton Suivant est pressé, il doit donner une alerte S'IL VOUS PLAÎT CHOSE ATLEAST UN ARTICLE, et il ne devrait pas aller à la boîte de dialogue suivante.

De plus, je veux que si l'utilisateur sélectionne l'option: MISE A JOUR LOGICIEL EXISTANT, seuls certains fichiers sont copiés, et si l'autre est RadioButton sélectionné, tous les fichiers sont copiés,

Est-ce possible en utilisant des sections ou des fonctions doivent être utilisées? puis-je appeler une section, comme si RadioButton 1 est choisi, alors SECTION CREATEALLFILES est appelé, d'autre SECTION CREATEONLYTWOFILES est appelé?

Selon moi, je pense que je veux que le code COMMENT MAINTENIR LES ids de ces deux RadioButtons et de les utiliser en conséquence, d'appeler différentes sections ou fonctions. Quel serait le code? S'il vous plaît aider?

En outre, après avoir appuyé sur NEXT sur cette page, la boîte de dialogue suivante viendra comme dans l'image ci-dessous: je veux montrer une étiquette, que ce soit DEMO se fait, ou UPDATE est en cours d'exécution, pour cela, je vais ajouter une étiquette à l'aide Resource Hacker, mais comment afficher cette étiquette et le cacher au choix de l'utilisateur de RadioButton entrer image description ici

Était-ce utile?

La solution

Vous pouvez sélectionner / sections ou tout simplement mettre désélectionner la logique dans une seule section, cet exemple fait à la fois:

!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

Pour définir le texte sur la page suivante, il suffit d'utiliser ${NSD_SetText} $hwndYourLabel "Text" et ShowWindow dans un bloc if qui teste installType $ (Ce besoin de code pour être dans le rappel de la fonction show (de MUI_PAGE_CUSTOMFUNCTION_SHOW) pour cette page)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top