如何解决Inno Setup退出安装页按钮显示系统语言而非安装语言问题
问题原因
该现象是Inno Setup默认逻辑导致的:触发取消安装时默认调用Windows原生的MessageBox API,该API的按钮文本会直接继承当前系统的区域语言设置,不会读取安装包内配置的多语言资源,所以会出现主文本匹配安装语言、按钮匹配系统语言的错位情况。
修复方案
你可以通过自定义取消按钮的点击逻辑,替换默认的系统弹窗,用Inno Setup自身的多语言资源渲染整个弹窗即可解决,操作如下:
- 打开你的Inno Setup安装脚本(.iss后缀文件),找到
[Code]段,若不存在则在脚本末尾新增该段 - 粘贴以下代码到
[Code]段内:
function CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean): Boolean; var ClickRes: Integer; begin Result := False; // 使用Inno自带多语言MsgBox,所有文本自动匹配用户选中的安装语言 ClickRes := MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO or MB_DEFBUTTON2); if ClickRes = IDYES then begin Cancel := True; Confirm := False; end else begin Cancel := False; Confirm := False; end; Result := True; end;
- 重新编译安装包即可生效
效果说明
修改后点击取消按钮弹出的退出确认框,标题、主文本、确认/取消按钮的文本都会完全匹配用户启动安装时选择的语言,不再跟随系统语言显示。
内容的提问来源于stack exchange,提问作者Phil_
相关产品推荐
相关产品推荐

