在nsis中沒有提供修改MessageBox的標題的接口,例如,在我的軟件打包程序中調用下面的語句
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "建議先卸載${PRODUCT_NAME},再安裝現有版本" IDOK uninstall IDCANCEL next
窗口的標題顯示爲“名稱 安裝”,如下圖所示
所以爲了修改MessageBox的標題,應採用下面的方式,代碼如下:
!define MB_OKCANCEL 0x00000001
!define MB_ICONEXCLAMATION 0x00000030
System::Call 'USER32::MessageBox(i $hwndparent, t "建議先卸載${PRODUCT_NAME},再安裝現有版本", t "警告", i ${MB_OKCANCEL}|${MB_ICONEXCLAMATION})i .r1'
注:“.r1”表示將MessageBox的返回值賦值給$1,如果點擊了OK,$1賦值爲1,如果點擊了CANCEL,$1被賦值爲2。所以根據$1的值就可以控制後續的邏輯流程了。
這樣修改後,窗口的標題顯示爲“警告”,如下圖所示:
對話框窗口的返回值,如何使用呢?代碼如下:
# $1=1 確定; $1=2 取消
StrCmp $1 2 next 0
MB_OKCANCEL,MB_ICONEXCLAMATION 的值可參考微軟API
https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-messagebox?redirectedfrom=MSDN
借鑑網址:https://nsis-dev.github.io/NSIS-Forums/html/t-252587.html