WiX 3.8引导程序本地化中的异常行为

时间:2015-08-12 10:00:52

标签: wix wix3.8

我使用WiXBaStd创建了一个安装程序,并通过编辑theme.xml来自定义UI。此外,我已在bootstrapper中应用本地化,并将thm.wxl(zh-cn) Build Action 设置为 EmbeddedResource ,将thm.wxl(ja-jp)设置为即可。

然后,当我在JP OS中运行bootstrapper.exe时,!(loc.ProductManufacturer)!(loc.TransformsCode)始终为 EN-美国,但UI显示日语!

如果我保留构建操作设置,请将thm.wxl(ja-jp)构建操作设置为 EmbeddedResource 和thm.wxl( en-us)到

然后,当我在JP OS中运行bootstrapper.exe时,!(loc.ProductManufacturer)!(loc.TransformsCode)始终为 JA- JP !和UI显示日语也!

为什么!(loc.ProductManufacturer)!(loc.TransformsCode)在本地化方面没有正确更改?如何解决这个问题呢 ?感谢。

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
  <?define ProductName = "Product A" ?> 
  <?define ProductManufacturer = "!(loc.ProductManufacturer)" ?>
  <?define ProductUpgradeCode = "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA" ?> 

  <Bundle Name="$(var.ProductName)" Version="$(var.BuildVersion)" Manufacturer="$(var.ProductManufacturer)" UpgradeCode="$(var.ProductUpgradeCode)">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
      <bal:WixStandardBootstrapperApplication SuppressOptionsUI="yes" LicenseFile="Localization\1033\LICENSE.rtf" ThemeFile="Custom\CustomRtfTheme.xml" />
      <Payload Name="1033\thm.wxl" SourceFile="Localization\1033\thm.wxl" />
      <Payload Name="1041\thm.wxl" SourceFile="Localization\1041\thm.wxl" />
      <Payload Name="1041\LICENSE.rtf" SourceFile="Localization\1041\LICENSE.rtf" />
    </BootstrapperApplicationRef>
    <Chain>
      <MsiPackage Id="MSI_A" SourceFile="A.msi">
        <MsiProperty Name="TRANSFORMS" Value="!(loc.TransformsCode)" />
      </MsiPackage>
      <MsiPackage Id="MSI_B" SourceFile="B.msi">
        <MsiProperty Name="TRANSFORMS" Value="!(loc.TransformsCode)" />
      </MsiPackage>
    </Chain>
  </Bundle>
</Wix>

<?xml version="1.0" encoding="utf-8"?> 
<WixLocalization Culture="ja-jp" Language="1041" xmlns="http://schemas.microsoft.com/wix/2006/localization">
  <String Id="TransformsCode">:ja-jp.mst</String>
  <String Id="ProductManufacturer">XXXXXX</String>
  <String Id="Caption">[WixBundleName] Setup</String>
  <String Id="Title">[WixBundleName]</String>
</WixLocalization>

1 个答案:

答案 0 :(得分:0)

在light.exe完成链接编译对象之后,

本地化字符串!(loc.whatever)和!(wix.variables)在整个构建过程结束时由绑定器应用。

此语句是预处理器语句,因此无法在预编译阶段解析有效负载: &lt;?define ProductManufacturer =&#34;!(loc.ProductManufacturer)&#34; ?&GT;