Цитата AlekseyPopovv:
А как быть с выбором папки на MUI_PAGE_DIRECTORY? По умолчанию обычная и портативная предлагают установку в $PROGRAMFILES\${APP} (InstallDir "$PROGRAMFILES\${APP}"), а хотелось бы портативную в $EXEDIR\${APP} Portable. »
|
Так вы дайте больше инфы или кусок своего кода, чтобы мы конкретно подсказали, какие команды вам использовать в коде или, может, сами пример накидаем, сейчас мы в угадайку будем так играть с вами, я же не знаю, как вы пользователю предлагаете сделать выбор:
1) Показать диалог с взаимоисключаемыми секциями
2) На собственной созданной страничке поставили 2 радиобаттона и юзер жмакает тот, который ему нужен (обычная/портативная установки)
3) Или тупо при заапуске показываете мессадж-бокс (сообщение с вопросом "Портативку не желаете?")...
4) Если собственная страничка, то чем создаёте? InstallOptions или nsDialogs?
вот как-то так...Ребята, задавайте более конкретные вопросы или сразу кидайте свой код, задаёте размытые вопросы - размытые ответы и получаете...
небольшой пример со стандартными средствами с взаимоисключаемыми компонентами (некрасиво, старо и не модно, мне лень что-то воротить "впустую")
Код:
![Выделить весь код](images/misc/selectcode.png)
!include "MUI.nsh"
!include "Sections.nsh"
!include "Logiclib.nsh"
!define MUI_COMPONENTSPAGE_SMALLDESC
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_COMPONENTS
Page custom PageCreate
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"
Name "TESTttt"
OutFile "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.exe"
InstallDir "$TEMP"
ShowInstDetails nevershow
Section "Обычная установка" ID_1
SectionEnd
Section /o "Портативная" ID_2
SectionEnd
Function .onSelChange
; Выбор между компонентам 1, 2
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${ID_1}
!insertmacro RadioButton ${ID_2}
!insertmacro EndRadioButtons
FunctionEnd
Function .onInit
StrCpy $1 ${ID_1}
FunctionEnd
Function PageCreate
SectionGetFlags ${ID_1} $0 ; Получаем флаги секции
IntOp $0 $0 & ${SF_SELECTED} ; Проверяем, отмеченая ли для установки секция "Обычная установка"
${If} $0 == 1 ; Если $0 = 1, значит секция отмечена для установки
StrCpy $INSTDIR "$PROGRAMFILES\TEST"
${Else}
StrCpy $INSTDIR "$EXEDIR\TEST"
${EndIf}
FunctionEnd
Section -Post
SectionEnd