我想编写一个烧录包,为不同的客户预配置我的产品。为了使它们的安装尽可能简单,我想为每个安装相同包但具有不同注册表值集的客户端创建不同的包。
现在我得到了一个MsiPackage
通过MsiProperty
. 我有一个默认的烧录引导程序,它将此属性设置为我在命令行上使用 light 传递的值-dproperty_a=value_a
。
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="Product Name"
Version="!(bind.packageVersion.main)"
Manufacturer="!(bind.packageManufacturer.main)"
UpgradeCode="{MYGUID}">
<WixVariable Id="property_a" Overridable="yes" Value=""/>
<BootstrapperApplicationRef
Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication
LicenseUrl="" LogoFile="bitmaps/logo.png"
ThemeFile="burnTheme.xml"/>
</BootstrapperApplicationRef>
<Chain>
<MsiPackage SourceFile="package.msi" Id="main">
<MsiProperty Name="property_a" Value="!(wix.property_a)"/>
</MsiPackage>
</Chain>
</Bundle>
</Wix>
一切都按预期工作。但是如果我安装两个不同的版本,一个不会替换另一个。安装了两次相同的产品。
我认为使用相同的UpgradeCode
应该可以防止这种情况。为什么可能安装了两个相同的捆绑包UpgradeCode
?
我可以确保安装备用版本在安装之前卸载另一个版本吗?有类似AllowSameVersionUpgrades
烧包的东西吗?