Как отменить установку NSIS без отображения окна с подтверждающим сообщением?

Установив NSIS с Modern UI 2, пользователь получает окно сообщения для подтверждения, когда он нажимает кнопку Отмена в мастере установки.

Я хочу, чтобы пользователь мог выйти из мастера установки без дополнительного подтверждения "Вы уверены?" диалоговое окно сообщения.

В источниках MUI я нашел этот фрагмент:

!macro MUI_FUNCTION_ABORTWARNING

  Function .onUserAbort

    !ifdef MUI_PAGE_FUNCTION_ABORTWARNING
      Call ${MUI_PAGE_FUNCTION_ABORTWARNING}
    !endif

    !ifdef MUI_ABORTWARNING
      !insertmacro MUI_ABORTWARNING
    !endif

    !ifdef MUI_CUSTOMFUNCTION_ABORT
      Call "${MUI_CUSTOMFUNCTION_ABORT}"
    !endif
  FunctionEnd

!macroend

Я могу определить функцию MUI_PAGE_FUNCTION_ABORTWARNING и функцию MUI_CUSTOMFUNCTION_ABORT.

Поскольку фактическое окно сообщения определяется в среднем вызове макроса MUI_ABORTWARNING, я не вижу способа остановить вызов макроса.

Мой вопрос:

Есть ли способ помешать MUI показывать пользователю окно с подтверждающим сообщением, когда он нажимает кнопку Отмена во время процесса установки?


person Uwe Keim    schedule 19.06.2012    source источник


Ответы (2)


Это предупреждение контролируется !define MUI_ABORTWARNING (перед включением mui.nsh):

Name "Test"
Outfile "Test.exe"
RequestExecutionLevel user

#Comment/uncomment this to toggle the messagebox: !define MUI_ABORTWARNING

!include MUI2.nsh

!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE English

Section
SectionEnd
person Anders    schedule 19.06.2012
comment
Спасибо, @Anders, я попробовал это, но, похоже, это не сработало. Я нажимаю Cancel на странице приветствия и все еще получаю вопрос, хочу ли я выйти. Поскольку я знаю высокое качество ваших ответов, мне интересно, где я сделал ошибку в моем скрипте. Любые идеи? - person Uwe Keim; 19.06.2012
comment
Простите, я не понимаю; строка 12 - это !define MUI_ABORTWARNING, который вы предложили вставить. Я смущен... - person Uwe Keim; 19.06.2012
comment
Это безумие; раньше строки не было, потом я добавил ее, теперь закомментировал, и теперь окно сообщения действительно исчезло. Так что сейчас он работает, хотя я понятия не имею, почему. - person Uwe Keim; 20.06.2012

(непроверено) вы можете попытаться отменить определение соответствующих функций?

!undef MUI_ABORTWARNING
//or
!undef MUI_FUNCTION_ABORTWARNING
person Seki    schedule 19.06.2012
comment
Спасибо, @Seki - я уже пробовал это (и очень хорошо попробовал еще раз). Выдает сообщение об ошибке !undef: "MUI_ABORTWARNING" not defined! - person Uwe Keim; 19.06.2012
comment
MUI_FUNCTION_ABORTWARNING - это макрос, и его нельзя! Undef'ed - person Anders; 19.06.2012