2012-06-19 77 views
2

用NSIS設置Modern UI 2,用戶會收到一個消息框,以確認他何時點擊安裝嚮導中的取消按鈕。如何在不顯示確認消息框的情況下取消NSIS設置?

我希望用戶能夠退出安裝嚮導而不需要確認附加的「你確定嗎?」對話框消息框。

在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?

回答

3

這個警告是由!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 
+0

謝謝,@Anders,我[試了這個](http://pastebin.com/HATfCZH8),它似乎不工作。我在歡迎頁面點擊取消,仍然有問題想要退出。由於我知道你的答案的質量很高,我想知道我在[我的腳本](http://pastebin.com/HATfCZH8)中犯了什麼錯誤。有任何想法嗎? –

+1

第12行,可能是由HMNisEdit嚮導插入的...... – Anders

+0

對不起,我不明白;第12行是你建議插入的'!define MUI_ABORTWARNING'。我很困惑... –

1

(未經測試)您可以嘗試取消定義相應的funcs?

!undef MUI_ABORTWARNING 
//or 
!undef MUI_FUNCTION_ABORTWARNING 
+0

謝謝,@Seki - 我已經嘗試過這一點(華中科技大學又試了一次)。它一直給出錯誤消息「'!undef:」MUI_ABORTWARNING「not defined!'」 –

+3

MUI_FUNCTION_ABORTWARNING是一個宏,不能!undef'ed – Anders

相關問題