NSIS. Выход из установщика
Я определил кастомную функцию abort
и хочу прервать установку.
!define MUI_ABORTWARNING
!define MUI_CUSTOMFUNCTION_ABORT customOnUserAbort
Function customOnUserAbort
Quit (or Abort) #no matter
FunctionEnd
Также создана кастомная страница, где выполняются долгие по времени операция (скачивание файла) в фоновом режиме (отдельном потоке) в функции MyCustomLeave
(при переходе на следующую страницу)
Function MyCustomLeave
ShowWindow $UnderTopLabel 0
ShowWindow $UnderTopLabel2 1
EnableWindow $CustomNext.Button 0
EnableWindow $RADIO1 0
EnableWindow $RADIO_LABEL1 0
EnableWindow $RADIO2 0
EnableWindow $RADIO_LABEL2 0
ShowWindow $GROUP1 ${SW_HIDE}
${NSD_LV_GetCheckState} $GROUP1 $unpackIndex $Checkbox_StateUnpackIndex
${NSD_LV_GetCheckState} $GROUP1 $hpIndex $Checkbox_StateSetUpHomepage
${if} $Checkbox_StateSetUpHomepage == 1
StrCpy $ChangeHomepage 1
${else}
StrCpy $ChangeHomepage 0
${endif}
${NSD_LV_GetCheckState} $GROUP1 $searchIndex $Checkbox_StateSetUpSearch
${if} $Checkbox_StateSetUpSearch == 1
StrCpy $ChangeSearch 1
${else}
StrCpy $ChangeSearch 0
${endif}
${NSD_LV_GetCheckState} $GROUP1 $ntIndex $Checkbox_StateSetUpNewTabPage
${if} $Checkbox_StateSetUpNewTabPage == 1
StrCpy $ChangeNewTabPage 1
${else}
StrCpy $ChangeNewTabPage 0
${endif}
/*CUSTOM_PAGE_SOFT_3*/
Call ValidateCheckedExtraSoft
GetFunctionAddress $0 **workerfunc**
BgWorker::CallAndWait #in background
FunctionEnd
При нажатии кнопки "закрыть x" (красная в правом верхнем углу) срабатывает customOnUserAbort
, появляется новое чистое серое окно, а инсталер не завершается пока до конца не выполнится workerfunc
.
Подскажите пожалуйста как можно немедленно завершить установщик? Или как можно сделать кнопку "закрыть x" не активной? Или может какой другой грамотный вариант?
Спасибо за помощь!
Источник: Stack Overflow на русском