Накидал вот такой код:
Код:

!include "MUI2.nsh"
!include "WinMessages.nsh"
!include "x64.nsh"
!include nsDialogs.nsh
OutFile "Sample.exe"
Var DIALOG
Var TEXT
Var Button1
Var Button2
Var Is32
Var Is64
Page custom nsDialogsPage LeaveDialog
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_LANGUAGE "English"
Function nsDialogsPage
;${If} ${RunningX64}
nsDialogs::Create 1018
Pop $DIALOG
${NSD_CreateLabel} 10u 10u 100% 29u "Выберите один из следующих типов установки:"
Pop $TEXT
${NSD_CreateRadioButton} 20u 50u 100% 12u "64-битная версия программы"
Pop $Button1
${NSD_CreateRadioButton} 20u 75u 100% 12u "32-битная версия программы"
Pop $Button2
${NSD_SetState} $Button1 1
Call Components64
${NSD_OnClick} $Button1 Components64
${NSD_OnClick} $Button2 Components32
nsDialogs::Show
;${Else}
; IntOp $Is32 0 + 1
;${EndIf}
FunctionEnd
Function Components64
IntOp $Is64 0 + 1
IntOp $Is32 0 + 0
FunctionEnd
Function Components32
IntOp $Is64 0 + 0
IntOp $Is32 0 + 1
FunctionEnd
Function LeaveDialog
Call DefineSections
FunctionEnd
Section /o "" SEC_64BIT
SectionEnd
Section /o "" SEC_32BIT
SectionEnd
Function DefineSections
IntCmp $Is64 1 is64 next
is64:
SectionSetText ${SEC_64BIT} "Секция для 64-версии"
next:
IntCmp $Is32 1 is32 next2
is32:
SectionSetText ${SEC_32BIT} "Секция для 32-версии"
next2:
FunctionEnd
И всё вроде как работает, кроме того что если жмёшь Back и выбираешь другой пункт то на странице компонентов отображаются 2 секции, а не одна.
Цитата:
Т.е. , кроме разных разрядностей самих приложений ещё и разные компоненты для каждой разрядности ? Никогда не встречал такого бардака...
|
Специфика программы

Плагин для графических хостов, которые могут быть как и 32 и 64-битные. Соответственно 32-версия плагина работает с 32-битным хостами, 64 с 64. Секций может быть и мало, в зависимости сколько хостов установлено на компе.
В .onInit происходит поиск этих самых хостов и определение секций. И вот мне надо сделать чтобы при определении секций ещё учитывался и выбор версии плагина.