1

我想编写一个烧录包,为不同的客户预配置我的产品。为了使它们的安装尽可能简单,我想为每个安装相同包但具有不同注册表值集的客户端创建不同的包。

现在我得到了一个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烧包的东西吗?

4

2 回答 2

1

您能否确保增加第二个软件包中的捆绑版本号?这将确保它升级以前的版本并将其删除。

于 2013-10-30T04:10:50.300 回答
0

您必须检查升级有什么问题,我假设您正在构建主要升级,在这种情况下,您必须保持 UpgradeCode 相同并更改 ProductCode、产品版本和包代码,请参阅博客以了解如何构建您的升级以替换现有产品

于 2013-10-28T21:14:56.303 回答