2015-09-24 3 views
0

Я пытался включить флажок в мой деинсталлятор. Я смог установить флажок. Но когда я пытаюсь установить состояние флажка, он всегда возвращает 0, даже если установлен флажок. Вот код, я используюNSD_GetState возвращает 0 всегда: NSIS

!define MUI_WELCOMEPAGE_TITLE_3LINES 
!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.ModifyUnWelcome 
!insertmacro MUI_UNPAGE_WELCOME 
!insertmacro MUI_UNPAGE_INSTFILES 
!define MUI_FINISHPAGE_TITLE_3LINES 
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.LeaveUnWelcome 
!insertmacro MUI_UNPAGE_FINISH 

Function un.ModifyUnWelcome 
${NSD_CreateCheckbox} 120u -18u 50% 25u "Do something special" 
Pop $mycheckbox 
SetCtlColors $mycheckbox "" ${MUI_BGCOLOR} 
${NSD_Check} $mycheckbox ; Check it by default 
FunctionEnd 

Function un.LeaveUnWelcome 
${NSD_GetState} $mycheckbox $0 
MessageBox MB_OK "On Leave mycheckbox = $mycheckbox $\n $$0 = $0" 
${If} $0 <> 0 
    MessageBox mb_ok "I'm special" 
${EndIf} 
FunctionEnd 

В результате я не мог проверить, если флажок установлен или нет. Что не так с моим кодом и как я могу его исправить?

Я даже пытался что-то вроде ниже

${NSD_Check} $mycheckbox ; Check it by default 
${NSD_SetState} $mycheckbox ${BST_CHECKED} 

Я получил код выше от Adding a checkbox to the NSIS Uninstaller Welcome Page

+0

Вы получаете предупреждения о компиляторе? – Anders

+0

Ваш результат может быть искажен выполнением mecro, вы получите лучший результат с переменной для хранения результата '$ {NSD_GetState}'? – Seki

ответ

0

ваших пользовательских функций, упомянутых два разных страниц. ModifyUnWelcome вызывает при создании страницы MUI_UNPAGE_WELCOME, LeaveUnWelcome - когда пользователь покидает последнюю страницу MUI_UNPAGE_FINISH. Управление, принадлежащее дескриптору ModifyUnWelcome, будет уничтожено в тот момент, когда вы вызываете $ {NSD_GetState}. Вы должны установить определения пользовательских функций около друг друга и до указанная декларация страницы.

!define MUI_WELCOMEPAGE_TITLE_3LINES 
!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.ModifyUnWelcome 
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.LeaveUnWelcome 
!insertmacro MUI_UNPAGE_WELCOME 
!insertmacro MUI_UNPAGE_INSTFILES 
!define MUI_FINISHPAGE_TITLE_3LINES 
!insertmacro MUI_UNPAGE_FINISH 
Смежные вопросы