当前位置:  开发笔记 > 前端 > 正文

使用WiX创建语言选择对话框

如何解决《使用WiX创建语言选择对话框》经验,为你挑选了2个好方法。

我使用WiX创建了一个多语言安装程序.我正在使用命令从命令行运行安装程序"msiexec /i myinstaller.msi TRANSFORMS=":1041",它运行正常.现在我使用bootstrapper创建了一个语言选择对话框.如何将所选语言传递到我的WiX安装程序以按所选语言启动?我从以下链接得到了这个想法:

    我们可以在运行时使用语言选择UI本地化WIX msi和bundle吗?

    http://wix.tramontana.co.hu/tutorial/transforms/morphing-installers

我的包有

由于我的自定义用户界面使用Burn from WiX工具集,我有这个屏幕:

在此输入图像描述

msiexec /i myinstaller.msi TRANSFORMS=":1041"如果我选择日语或者msiexec /i myinstaller.msi TRANSFORMS=":1031"选择德语并按OK,我想以某种方式执行命令.

请告诉我该怎么做才能解决这个问题.有没有其他方法可以做到这一点?如果是的话,请告诉我.一些代码示例将是一个更好的帮助.



1> Rob Menschin..:

不幸的是,必须在打开MSI时应用转换.这意味着,您需要预先使用该引导程序将适当的命令行传递给Windows Installer以应用正确的转换.

在引导程序中获取UI以询问用户要显示的语言(组合框或其他什么?)之后我可能只需执行一个ShellExecute()格式化命令行参数,如:

("/i myinstaller.msi TRANSFORMS=\":%d\", dwLanguageIdFromComboBox)

这将使用正确的UI启动安装程序,您的引导程序可以消失.



2> DTdev..:

最后我得到了解决方案.可以按照此处所述创建用于语言选择的Bootstrapper UI .之后,我在按钮单击事件中编写了以下代码,以所选语言启动msi:

Bootstrapper.Engine.StringVariables["CommandArgs"] = ":1031";
Bootstrapper.Engine.Plan(Wix.LaunchAction.Install);
break;
....
....
this.Close(); //outside of switch statement
break;

上面的代码将使用CommandArgs作为MSI属性.然后我将以下代码添加到我的bundle.wxs文件中


   

按照我想要的方式工作.此代码与使用以下命令从命令行启动msi相同

msiexec /i myinstaller.msi TRANSFORMS=":1031"

唯一的问题是,从上面的UI中选择语言后,需要一些时间来启动MSI.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有