我使用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>
答案 0 :(得分:0)
本地化字符串!(loc.whatever)和!(wix.variables)在整个构建过程结束时由绑定器应用。
此语句是预处理器语句,因此无法在预编译阶段解析有效负载: &lt;?define ProductManufacturer =&#34;!(loc.ProductManufacturer)&#34; ?&GT;