如何使用Burn Bootstrap应用程序安装本地化的MsiPackage

时间:2016-07-14 10:18:51

标签: wix burn

我有许多本地化的MSI包。假设本地化的是开始菜单条目,使用!(loc.StartAppDescription)。

在MSI中使用WiX完成这一点似乎是合理的。所以我已经做到了,我已经根据基线en-US版本生成了许多变换,并且我将其嵌入到最终的MSI中,MyCoolApp-1.2.123.0.msi。

转换可以与MsiPacky元素一起使用,MsiPackage中的Name =“TRANSFORM”Value =“:it-IT”。

每个本地化的MSI都有一个自动生成的ProductCode,正如推荐的那样,因此转换也会在此处引起更改以及实际文本。

然后,我使用标准引导程序应用程序构建了一个Burn Bootstrapper,它基于InstallCondition将选择x86或x64版本的安装程序。此引导程序也已本地化。

bootstrapper本地化工作正常。 MSI包本地化工作正常。

但是,我如何将它们组合在一起?

似乎无法在Burn链中实际使用本地化的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 bootstrapper安装本地化的MsiPackage?

我错过了一些非常明显的东西吗?

1 个答案:

答案 0 :(得分:1)

是否要求您的不同语言产品可以安装SxS?

如果没有,请在变换中删除ProductCode的更改。使用刻录时遇到的一个问题是,在安装软件包时,它依赖于ProductCode和UpgradeCode的非转换MSI值完全相同。

在Burn中,您需要运行自己的自定义代码来设置刻录/捆绑变量,您将使用该变量来设置将传递给包的TRANSFORMS msi属性(以及与您发现必须使用的语言相关的任何其他属性)传入)。这可能意味着创建自己的自定义BA(我还没有获得BA功能,所以我不知道这是否有效,尽管这似乎是一个完美的解决方案)。