我们有一个基本的MSI安装程序项目。在某个对话框中,我们对用户提供的数据进行验证,然后使用MessageBox()抛出相应的消息。
现在,当MessageBox出现时,它会显示我们想要的消息和一个OK按钮。
我们有一个问题w.r.t这个OK按钮的区域设置。在英语,法语Windows 2008机器上测试时,我们可以获得确定按钮,其中OK是英语。当我们在西班牙语Windows机器上使用相同的安装程序时,相同的OK按钮会出现西班牙语OK。
我无法弄清楚这种行为的原因是什么。任何提示/帮助都会有很大的帮助。
/ Avadhut。
答案 0 :(得分:0)
从您的问题中不清楚您调用的API究竟是什么,以及确切的情况。请注意,对于几乎所有人来说,在" native"中显示OK按钮。机器的语言不会混淆,因此只会在QA过程中引起问题。
Windows的MessageBox
API本地化为与Windows本身相同的区域设置。相比之下,MessageBoxEx
is documented采用语言参数,虽然我看,一位评论者说它并不总是改变默认的本地化。 (我的猜测是评论者的机器上没有所要求的语言。)
如果您在MSI DLL自定义操作中显示消息,则使用MsiProcessMessage
比MessageBox
更好,因为MsiProcessMessage
会正确显示其窗口。我怀疑您正在使用ControlEvent,这在静默安装中是隐式避免的,但MsiProcessMessage
也不会在静默安装期间显示其消息而不需要任何额外的工作;如果在执行序列操作中使用MessageBox
,则必须手动检查UILevel
。但是,从文档中不清楚MsiProcessMessage
消息框上的按钮是否会被本地化。