You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更换列表控件后NSIS安装器选韩语反复弹出语言选择框

NSIS多语言控件替换及Droplist尺寸问题解决方案

一、替换为ListBox/TreeView后韩语反复弹出语言选择框

可能原因

  • TreeView/ListBox的通知事件逻辑与Droplist不一致,导致MultiLanguage插件未正确捕获韩语选中事件
  • 韩语条目编码或语言ID在INI配置中存在异常
  • 通知事件设为ONDBLCLICK时,双击触发的语言选择流程与Droplist的单击提交逻辑不匹配

解决方案

  1. 调整通知事件类型
    将ONDBLCLICK改为ONSELECT,让选中项立即触发语言确认:
    WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Notify" "ONSELECT"
    
  2. 验证韩语语言条目配置
    检查MultiLanguage.ini中韩语条目的Text和State值,确保语言ID(如KO)与MUI注册的语言宏一致:
    !insertmacro MUI_LANGUAGE "Korean" ; 确认此宏已正确注册
    
  3. 强制传递选中项状态
    在lang_pre函数末尾添加代码,确保控件选中状态被MultiLanguage插件正确识别:
    ; 触发确认逻辑,传递选中值
    SendMessage $HWNDPARENT ${WM_COMMAND} ${IDOK} 0
    

二、Droplist设置Bottom属性无效导致超出边界

可能原因

InstallOptionsEx中Droplist控件的Bottom属性优先级低于Height和DropHeight,下拉列表高度默认由条目数量自动计算,会忽略手动设置的Bottom值。

解决方案

放弃使用Bottom,改用Height控制控件自身高度,DropHeight控制下拉列表的展开高度:

WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Left" "70"
WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Top" "135"
WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Width" "220" ; 自定义控件宽度
WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Height" "32" ; 控件自身高度
WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "DropHeight" "160" ; 下拉列表最大展开高度

内容的提问来源于stack exchange,提问作者Endrit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 11:30:11