【发布时间】:2016-07-14 10:18:50
【问题描述】:
我有许多本地化的 MSI 软件包。假设本地化的是开始菜单条目,使用 !(loc.StartAppDescription)。
在 MSI 中使用 WiX 完成此操作似乎是合理的。所以我已经这样做了,并且我已经根据基线 en-US 版本生成了许多转换,并将其嵌入到最终的 MSI MyCoolApp-1.2.123.0.msi 中。
转换可以与 MsiPackage 中 Name="TRANSFORM" Value=":it-IT" 的 MsiProperty 元素一起使用。
按照建议,每个本地化 MSI 都有一个自动生成的 ProductCode,因此转换也会导致此处与实际文本一起发生变化。
然后,我使用基于 InstallCondition 的标准引导程序应用程序构建了一个刻录引导程序,它将选择 x86 或 x64 版本的安装程序。此引导程序也已本地化。
引导程序本地化工作正常。 MSI 包本地化工作正常。
但是,我该如何将它们组合在一起呢?
似乎没有办法在刻录链中实际使用本地化 MSI。这甚至说不通。为什么要花费如此多的时间和精力来使 Windows 安装程序本地化成为可能,并通过 Burn 和标准引导应用程序使安装过程的 UI 可本地化,然后又无法使用另一个?
我错过了什么?通过 wix 邮件列表,我得到了一个权威回复,基本上说“Burn 不支持通过 MsiPackage 转换进行本地化,并且实现起来并不简单”(不是字面引用,我的解释)。仍然没有关于如何实际实现我所追求的建议或提示:根据 Burn 的用户文化安装几个可能的本地化 MSI 之一。
我基本上尝试过这里描述的操作:http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-td7208949.html,它使用 InstallConditions 来确定用于安装的长链转换中的转换。这不起作用,因为升级和卸载方案以各种方式中断。
另外,由于我已经有数百万用户安装了非本地化 MSI(在新场景中是 en-US 基线),我需要能够升级这些现有用户,所以所有本地化MSI 需要与许多系统中已安装的现有 MSI 具有相同的升级代码。
是的,我也尝试了上述方法,但没有实际使用转换,而是完全本地化的 MSI 包。仍然没有设置的乐趣,只是一个更大的安装程序。
真的没有人需要从 Burn Bootstrapper 运行本地化的 MSI 包,并且成功地创建了这样的东西吗?
这似乎是 Burn 101 课程中的内容:如何制作一个 Burn 引导程序来安装本地化的 MsiPackage?
我是否遗漏了一些非常明显的东西?
【问题讨论】: