Wix创建多语言msi

时间:2014-11-17 06:55:32

标签: wix windows-installer multilingual

最近我正在为我的团队创建一个多语言wix msi包。我搜索了Google上的本地化以及stackoverflow已经有一段时间了,终于找到了要遵循的内容:http://www.geektieguy.com/2010/03/13/create-a-multi-lingual-multi-language-msi-using-wix-and-custom-build-scripts/。目前我只添加了2种语言支持:英语和简体中文,以检查这种方法是否适合我。主要的wxs前面部分是这样的:

<Product Id="B5CB3C6A-A8ED-4308-8ADE-17729FE1FB23" Name="MyProduct" Language="!(loc.LANG)" Codepage="UTF-8" Version="11.51.0027" Manufacturer="My Company" UpgradeCode="D42070C3-43CB-4E2B-9B96-2F8D84A6C8A8">
    <Package InstallerVersion="200" Compressed="yes" Languages="1033,2052" InstallPrivileges="elevated" InstallScope="perMachine" />

对于产品的语言属性我从本地化wxl文件中获取价值,现在我有2个文件,一个是en-US.wxl,另一个是zh-CN.wxl,< / p>

在en-US.wxl:1033

在zh-CN.wxl 2052

我还在2个wxl文件中设置了相应的代码页,将en-US代码页设置为1252,将zh-CN设置为936。

在VS中构建项目后,我获得了2 msi,一个在en-US文件夹中,另一个在zh-CN文件夹中,我使用以下命令创建多语言msi:

cscript WiLangId.vbs zh-CN \ MyProduct.msi产品2052

Msitrans.exe -g zh-CN \ MyProduct.msi zh-CN \ MyProduct.msi zh-CN.mst

cscript WiSubStg.vbs en-US \ MyProduct.msi zh-CN.mst 2052

cscript WiSubStg.vbs en-US \ MyProduct.msi

在cmd中执行上面的命令,我将最终的msi复制到中文win7系统上试试,问题是在我双击msi进行安装后,第一个UI对话框仍然是英文但很快就变成了中文,对不起,我无法在此发布截图,因为stackoverflow需要10个声誉才能发布图片,但我看到的第一个Dialog上的文字是&#34;准备安装.... &#34;和右下角的按钮&#34;取消&#34;用户界面在2-3秒后成为中文。有没有人提出过这个问题?

1 个答案:

答案 0 :(得分:0)

在MSI安装开始时,默认情况下(如果在系统范围内启用)创建Windows系统还原点。该系统还原点似乎发生在语言环境转换之前,并导致您观察到的行为。

您可以通过将MSIFASTINSTALL属性设置为1或包含该属性的任何值来禁用它(例如,如果您还想减少进度消息的数量,请使用5

<Property Hidden="yes" Id="MSIFASTINSTALL" Value="1" />

例如,在您的.wxs文件中:

<?xml version="1.0" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util='http://schemas.microsoft.com/wix/UtilExtension'>
  <Product Id="XXX" Name="XXX" Language='!(loc.LANG)' Codepage='0'
           Version="XXX" Manufacturer="XXX"
           UpgradeCode="XXX">

    <Product Id="B5CB3C6A-A8ED-4308-8ADE-17729FE1FB23" Name="MyProduct" Language="!(loc.LANG)" Codepage="UTF-8" Version="11.51.0027" Manufacturer="My Company" UpgradeCode="D42070C3-43CB-4E2B-9B96-2F8D84A6C8A8">
    <Package InstallerVersion="200" Compressed="yes" Languages="1033,2052" InstallPrivileges="elevated" InstallScope="perMachine" />

    <!-- Disable System Restore point creation for this MSI (faster installation) -->
    <Property Hidden="yes" Id="MSIFASTINSTALL" Value="1" />

    <!-- Rest of your setup ... -->
  </Product>
</Wix>

您可以在Microsoft Windows docs上了解有关MSIFASTINSTALL的信息