1

我创建了具有多种语言的 license.rtf 文件,当我尝试构建我的 wix 项目时,它向我显示了这个错误:

为字符串提供了指定数据库代码页“1252”中不可用的字符。将这些字符更改为数据库代码页中存在的字符,或通过修改以下属性之一来更新数据库的代码页:Product/@Codepage、Module/@Codepage、Patch/@Codepage、PatchCreation/@Codepage 或 WixLocalization /@代码页。

我试图在产品标签上添加这个属性Codepage="1256"它仍然显示相同的错误。

你能帮我解决这个问题吗?

4

1 回答 1

2

这听起来很神秘。快速搜索发现了这个现有问题:Wix string with characters not available in database's codepage but codepage is set

似乎MSI 的摘要流有一个单独的代码页设置- Codepage Summary 属性- 这与包的主代码页设置不同。

在使用InstEd进行测试时,我注意到一个称为“ SI Codepage ”的代码页设置(请参阅页面下方)。我真的没有在Orca中看到这个代码页摘要属性。也许它就在那里,而我只是看不到它。

  1. 尽管您设置了主包代码页,但您可能没有正确设置此摘要信息流代码页?

    • 看起来摘要信息流代码页是在本地化文件中设置的,并且不会在本地化文件Package element中自动覆盖。这可能是一个 WiX 错误wxl
    • 我已经在下面的代码片段中进行了手动覆盖SummaryCodepage="!(loc.SummaryCodepage)"- 通过本地化字符串从本地化文件中获取值。本质上,您是在自己完成这项工作,并且应该可以在没有 WiX 人员为您需要的错误修复的情况下工作。我希望- 一个新的 WiX 版本是沉重的东西)。
  2. 我还取出了主源文件中的CodePage attributefor ,尝试让本地化文件中的设置生效。请参阅底部 WiX 错误数据库条目列表中的最后一个链接。Product elementwxswxl

  3. 我的直觉是“这里有更多的龙”。本地化处理起来很奇怪。这在合适的日本机器上会如何表现?我想知道,请做测试


我拼凑了一个快速的模型,但没有时间正确测试。也许有一个快速测试:

<Product Id="*" Name="!(loc.ApplicationName)" Language="!(loc.LanguageLcid)" Version="1.0.0" 
                Manufacturer="!(loc.ManufacturerName)" UpgradeCode="PUT-GUID-HERE">

  <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" 
           Languages="!(loc.LanguageLcid)" SummaryCodepage="!(loc.SummaryCodepage)" />

这是日文本地化文件(我不知道那些日文字符是什么意思,我只是复制并粘贴了一些东西来完成我的测试 -更新:好的,谷歌翻译来救援!没有发现攻击性语言!):

<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="ja-JP" Codepage="932" Language="1041" 
                 xmlns="http://schemas.microsoft.com/wix/2006/localization">
  <String Id="SummaryCodepage">932</String>
  <String Id="LanguageLcid">1041</String>
  <String Id="ApplicationName">各務原市農地支援・畑地管理システムインストーラー</String>
  <String Id="ManufacturerName">(株)テイコク</String>
</WixLocalization>

我也将一些日文字符放入了一个单独的许可协议 RTF 中(我没有设置不同 RTF 文件的正确本地化包含)。设置 GUI 看起来不错 - 它以日文显示,并且日文字符显示在许可协议中。

请试一试,看看您的问题是否消失。如果没有,也许花一些时间查询WiX 错误数据库


命中附近的 WiX 错误跟踪器

于 2018-04-02T04:35:13.110 回答