修复多语言包

Repair in Multi Language Bundle

我有一个带有语言选择单选按钮的 WixStandardBootstrapper

<Button Name="InstallEnglish" HexStyle="000009" X="180" Y="150" Width="100" Height="15" TabStop="yes" FontId="5" HideWhenDisabled="no">#(loc.InstallEnglishRadio)</Button>
<Button Name="InstallGerman" HexStyle="000009" X="180" Y="170" Width="100" Height="15" TabStop="yes" FontId="5" HideWhenDisabled="no">#(loc.InstallGermanRadio)</Button>

这工作正常并相应地设置变量 InstallEnglishInstallGerman

基于这些变量,我启动了我的 MSI:

<MsiPackage Name="Installer"
                  SourceFile="Installer.msi"
                  Vital="yes"
                  Visible="no"
                  InstallCondition="InstallEnglish"
                  DisplayInternalUI="yes" />
<MsiPackage Name="Installer_de"
                  SourceFile="Installer.msi"
                  Vital="yes"
                  Visible="no"
                  InstallCondition="InstallGerman"
                  DisplayInternalUI="yes">
   <MsiProperty Name="TRANSFORMS" Value=":de-DE.mst"/>
</MsiPackage>

安装可以按预期工作,但是当在例如之后选择维修时德文安装,先修复德文安装,卸载英文安装删除德文安装。

这并不意外,因为 InstallCondition 只检查安装条件。但是我该如何处理维修呢?

只指定一次 MSI 并动态生成 TRANSFORMS 值(例如,我为此使用自定义托管引导程序)。

<MsiPackage Name="Installer"
                  SourceFile="Installer.msi"
                  Vital="yes"
                  Visible="no"
                  DisplayInternalUI="yes">
   <MsiProperty Name="TRANSFORMS" Value="[Transforms]"/>
</MsiPackage>