4

我有一个问题,我想做的事情是否可行,如果答案是肯定的,该怎么做。

我是 wix 的新手,并且一直在阅读有关如何动态地将文件夹包含到安装程序中的内容,最终我能够在 nant 中执行一项任务,该任务使用 heat.exe 生成 wxs 文件,然后将新生成的 wxs 文件添加到灯光和蜡烛任务。这允许我将文件夹的内容添加到 msi,然后安装该文件夹及其内容。

我的问题始于我添加到 msi 的文件夹包含名称已本地化的文件(这是一项要求)。

当我将文件添加到名称为俄语的目录结构中时,例如不是 1252 代码页,我收到错误消息:

[exec] ......Templates.wxs(65):错误 LGHT0311:提供的字符串包含指定数据库代码页“1252”中不可用的字符。将这些字符更改为数据库代码页中存在的字符,或通过修改以下属性之一来更新数据库的代码页:Product/@Codepage、Module/@Codepage、Patch/@Codepage、PatchCreation/@Codepage 或 WixLocalization /@代码页。

我尝试设置Product/@Codepage65001(UTF-8),但这并没有解决问题。

最终,我想要做的是能够将文件夹及其内容添加到安装程序,然后其他人添加任意数量的文件,这些文件的名称已本地化到该文件夹​​中。这样,每当构建运行并随后创建 msi 时,msi 将包含该文件夹及其内容。

非常感谢您提前。

4

1 回答 1

4

这就是 WiX.chm 关于设置 MSI 数据库的代码页的说法:

您可以通过整数(如 1252)或 Web 名称(如 Windows-1252)将其设置为有效的 Windows 代码页。由于用户界面问题,官方不支持 UTF-7 和 UTF-8。不支持 Unicode。

只要您要使用不同语言命名的文件,即文件表不适合单个 Windows 代码页,您就别无选择。UTF-8 据说没有得到官方的支持,这就留下了一个希望的地方。

如果将元素的CodePage属性设置为,它将成功构建。您可以毫无问题地安装/卸载生成的 MSI。我已经玩了一点,并没有遇到上面那个警告中提到的任何“接口问题”。ProductUTF-8

此外,我在谷歌上搜索了一下这个主题,发现 InstallShield 允许将 MSI 数据库代码页设置为 UTF-8,这反映在他们的文档中(在该页面上搜索“utf-8”)。他们对潜在的界面问题有更多话要说:

但是,某些情况会导致用户界面问题。例如,如果最终用户指定 /qb 命令行选项或从“添加或删除程序”卸载产品,Windows Installer 将使用非常小的字体在 UTF-8 数据库中显示用户界面文本。

他们还希望保持安全,因此false默认情况下使用此设置(没有 UTF-8,只有 ASCII)。

所以,最后,在你的情况下我会怎么做?

  • 如果这是对安装包的严格要求,请UTF-8用作代码页
  • 在与本地化相关的所有可能组合(英语操作系统、非英语操作系统、当前文化和文化 UI 的各种组合)上测试所有可能的场景(安装/卸载/修复/升级/等)
  • 如果您遇到那些幽灵“界面问题”,请将其展示给您的利益相关者,确定这是否是您可以忍受的,如果您这样做,请发布已知问题
  • 否则,请回收这个想法,并感谢您的生活有机会提升您在该领域的技能:)

希望这可以帮助。

于 2012-10-03T21:02:40.747 回答