Wix创建多语言MSI

3

最近我正在为我的团队创建一个多语言的wix msi软件包。我在谷歌和stackoverflow上搜索本地化翻译了相当长一段时间,最终找到了一个可以参考的方法: http://www.geektieguy.com/2010/03/13/create-a-multi-lingual-multi-language-msi-using-wix-and-custom-build-scripts/。目前,我只添加了英语和简体中文的支持,以检查这种方法是否适合我。主要的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 文件中获取。现在我有两个文件,一个是 en-US.wxl,另一个是 zh-CN.wxl。在 en-US.wxl 中,我设置 1033,在 zh-CN.wxl 中设置 2052。我还在这两个 wxl 文件中设置了相应的代码页,将 en-US 代码页设置为 1252,将 zh-CN 设置为 936。 在 VS 中构建项目后,我得到了两个 msi,一个在 en-US 文件夹中,另一个在 zh-CN 文件夹中。我使用以下命令创建多语言 msi:cscript WiLangId.vbs zh-CN\MyProduct.msi Product 2052、Msitrans.exe -g en-US\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 个声望才能发布图片。但我看到的第一个对话框上的文字是“正在准备安装...”,底部右侧有一个“取消”按钮,然后在 2-3 秒后 UI 就变成了中文。是否有人曾经遇到过这个问题?

这是一个在英语系统上添加了中文支持的系统吗?可能你正在看到嵌入在 msiexec.exe 或相关语言资源 dll 中的 系统消息。因此,它被硬编码进系统本身的语言资源中,与你的软件包或其中所含语言无关。 - Stein Åsmul
1个回答

0

Windows系统还原点默认情况下会在MSI安装开始时创建(如果系统启用)。此系统还原点似乎会在区域设置转换之前发生,导致您观察到的行为。

您可以通过将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文档上了解有关MSIFASTINSTALL的信息。


很好的回答,但我认为真正的问题与本地化支持(语言)有关,而不是系统还原点创建或安装速度缓慢。 - Stein Åsmul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接